Envision Center
Technical optimizations
To prevent the streaming server from becoming I/O bound, the following things were done:
  • use linux syscall sendfile() to remove some memcpy() calls
  • create one giant file for the entire video to reduce open/close calls
  • made it singlethreaded instead of multithreaded
  • set the read size to 65536 bytes, which is the optimal read size based on the below chart
    and empirical testing

  • (note: for a full implementation, it would be preferable to use 12 servers and XRaids rather than 6, so that I/O is less likely to be a limiting factor, potentially reducing the need for some or all of these suggestions.)
     
    technical optimization