【问题标题】:Linux: need to design pre-fetcher to cache files from NAS into system memoryLinux:需要设计 pre-fetcher 将文件从 NAS 缓存到系统内存中
【发布时间】:2011-08-26 03:11:20
【问题描述】:

我正在为以下场景设计服务器:

  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 个并发量级 预取。我知道如果线程太多,线程可能会导致性能下降。改用 fork 一个新进程会更好吗?有没有比线程或进程更有效的方法?

谢谢!!!

【问题讨论】:

    标签: linux caching disk prefetch nas


    【解决方案1】:

    这是过早的优化。尝试在不使用“强制”缓存的技巧的情况下实现您的系统,看看它是如何工作的。我敢打赌它会没事的——如果结果证明你的技巧与系统上的其他东西不兼容,你就不必担心令人讨厌的惊喜。

    【讨论】:

    • 谢谢,约翰。但是,我确实需要这种优化。没有它,每次客户端请求图像时,都会增加 NAS 读取的延迟。添加预取可以消除这种延迟,但代价是复杂性。
    • 哦。你说你正在设计一个服务器,我认为这是一个相当新的项目。如果您确定需要这样的优化,我的两个建议是进行一些基准测试以显示当前性能,然后尝试在固态驱动器 (SSD) 上运行它。
    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多