2011-05-16 52 views
0

我设计的服务器用于以下情形:的Linux:需要设计预取缓存文件从NAS到系统内存

  1. 一系列单个图像的存储在NAS,可以说100他们
  2. 一个客户端连接到服务器通过TCP套接字,并请image39
  3. 服务器从NAS读取image39并在插座
  4. 很可能是客户端也将请求其他图片来自系列中,因此发回给客户端:
  5. 我想启动一个线程,通过图像迭代,读取它们,并做了cat image39 > /dev/null强制缓存到内存中的服务器
  6. 线程将如下获取图像:image38,image40,image37,image41等
  7. 获取已影像被忽略
  8. 如果客户现在要求image77,我想重置取线程获取:image76,image78等

这有可能扩展到许多系列和客户端。大概在1000个并发的 预取的顺序。我知道如果线程太多,线程可能会导致性能下降。换一个新的流程会更好吗?有没有比线程或进程更有效的方法?

谢谢!

回答

1

这是过早的优化。试着实现你的系统,不用伎俩来“强制”缓存,看看它是如何工作的。我敢打赌它会没事的 - 而且如果事实证明你的诡计在系统上的其他事情上表现不佳,那么你就不必担心令人讨厌的惊喜。

+0

谢谢,约翰。但是,我*需要这种优化。没有它,客户端每次请求映像时,NAS读取都会增加延迟。增加预取可以消除这种延迟,但代价很复杂。 – Jacko 2011-05-16 10:57:30

+0

哦。你说你正在设计一个服务器,我认为这是一个相当新的项目。如果您确定需要这样的优化,我的两个建议是制定一些基准来展示当前的性能,然后尝试在固态驱动器(SSD)上运行它。 – 2011-05-17 01:52:06