IO를 제한하기 위해 LD_PRELOAD를 사용할 수 있습니까?

IO를 제한하기 위해 LD_PRELOAD를 사용할 수 있습니까?

저는 다소 IO 집약적인 Kubernetes 클러스터를 호스팅하는 일을 하고 있습니다. 이상할 것은 없습니다. 약 1GB의 데이터를 다운로드하여 폴더에 쓰고 /tmp약간의 편집을 하고 압축 및 암호화한 다음 다시 다른 곳에 업로드합니다. 2시간마다 실행됩니다.

며칠 동안 우리의 클라우드 제공자 지원(A로 시작하고 E로 끝나는 이름을 가진 대규모 클라우드 제공자 지원)은 많은 로드를 생성했기 때문에 이 작업에서 발생한 모든 Kubernetes 문제에 대해 자신을 비난했습니다. 그런 일이 쿠버네티스에서 문제를 일으킬 수 있다는 게 좀 이상하다고 생각하고, 지원이 훌륭하다고 생각하지 않지만 아마도 그 말이 맞을 것입니다.

그래서 저는 IO 부하를 줄이기 위한 솔루션을 찾고 있습니다. 이 작업은 IO에 묶여 있습니다. 그런데 거의 모든 것이 이 클라우드 공급자에서 실행되기 때문에 실제 돈을 투자하지 않는 한 그들이 제공하는 IO 성능은 매우 낮습니다.

Kubernetes는 아직 IO 제한을 지원하지 않는 것 같습니다. 따라서 확실한 해결책은 작업을 Kubernetes 또는 클라우드 외부로 옮기는 것입니다. 그러나 프로세스가 시작되고 곧 훨씬 더 나은 성능과 가용성으로 커피 머신 옆에 있는 오래된 노트북에서 모든 것을 실행하는 모습을 볼 수 있습니다. .

대안 libc으로 LD_PRELOAD. 감지된 속도가 기존 대용량 저장 USB-2 스틱이 제공할 수 있는 속도보다 높으면 일부 nanosleep 호출을 삽입합니다.

이것이 가능하다고 생각하십니까? 전에 이런 일을 해본 사람이 있나요?

관련 정보