moonsn
V2EX  ›  C++

怎样避免写出来的网络服务程序受磁盘 IO 抖动影响最小?

  •  
  •   moonsn · Feb 6, 2020 via Android · 2551 views
    This topic created in 2330 days ago, the information mentioned may be changed or developed.
    如题,现在有一个 rpc 服务,在一些磁盘 IO 抖动的机器上,服务相应时间也跟着抖动。服务本身是很少读写磁盘的。
    3 replies    2021-01-30 01:54:09 +08:00
    yidinghe
        1
    yidinghe  
       Feb 6, 2020 via Android
    没有其他约束的情况下,把磁盘内容放到内存中是显而易见的做法。
    codehz
        2
    codehz  
       Feb 7, 2020 via Android
    不考虑缓存文件的情况下,方案如:
    1 上多线程(或者用 glibc 的 aio,也是多线程实现
    2 用 native aio (需要 Direct IO 支持,和文件系统有关系,然后实际需要不少技巧才能发挥作用
    3 用 io-uring 的 api (需要新内核支持

    当然最好还是自己缓存一下文件,做个 LRU 一类的缓存

    其实合理的情况应该是上数据库(
    YouLMAO
        3
    YouLMAO  
       Jan 30, 2021 via Android
    一定是你没有用异步线程池吧,阻塞了吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3676 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 04:31 · PVG 12:31 · LAX 21:31 · JFK 00:31
    ♥ Do have faith in what you're doing.