我有一份托管 Kubernetes 集群的工作,该集群有点 IO 密集型。没什么疯狂的,它会下载大约 1GB 的数据,将其写入/tmp
文件夹,进行一些小的编辑,压缩和加密,然后再次将其上传到其他地方。每 2 小时运行一次。
几天以来,我们的云提供商支持(一个名称以 A 开头、以 E 结尾的大型云提供商支持)将我们在这项工作中遇到的所有 Kubernetes 问题归咎于它,因为它产生了大量负载。我认为这样的工作可能会在 Kubernetes 中引起任何问题,这有点疯狂,而且我认为支持不是很好,但他们可能是对的。
所以我正在寻找减少IO负载的解决方案,这项工作是IO绑定的。顺便说一句,由于几乎所有东西都在这个云提供商上运行,它们提供的 IO 性能非常差,除非你向它们投入真金白银。
Kubernetes 好像还不支持 IO 限制。因此,一个明显的解决方案是将工作移出 Kubernetes,甚至移出云,但它会启动一个流程,很快我就可以看到自己在咖啡机旁边的旧笔记本电脑上运行所有内容,具有更好的性能和可用性。
作为替代方案,我正在考虑限制来自libc
using 的读取和写入调用LD_PRELOAD
。如果检测到速度高于旧的大容量存储 USB-2 棒所能提供的速度,则注入一些 nanosleep 调用。
你认为这可行吗?以前有人这样做过吗?