moonsn
V2EX  ›  C++

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

By moonsn at 2020 年 2 月 6 日 · 2798 次点击
如题,现在有一个 rpc 服务,在一些磁盘 IO 抖动的机器上,服务相应时间也跟着抖动。服务本身是很少读写磁盘的。
3 条回复  •  2021-01-30 01:54:09 +08:00
yidinghe
   1
yidinghe  
PRO
   2020 年 2 月 6 日 via Android
没有其他约束的情况下,把磁盘内容放到内存中是显而易见的做法。
codehz
   2
codehz  
   2020 年 2 月 7 日 via Android
不考虑缓存文件的情况下,方案如:
1 上多线程(或者用 glibc 的 aio,也是多线程实现
2 用 native aio (需要 Direct IO 支持,和文件系统有关系,然后实际需要不少技巧才能发挥作用
3 用 io-uring 的 api (需要新内核支持

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

其实合理的情况应该是上数据库(
YouLMAO
   3
YouLMAO  
   2021 年 1 月 30 日 via Android
一定是你没有用异步线程池吧,阻塞了吧
© 2026 V2EX · 46ms · 3.9.8.5