전체 시스템 속도를 저하시키지 않고 프로세스당 더티 바이트를 제한합니다.

전체 시스템 속도를 저하시키지 않고 프로세스당 더티 바이트를 제한합니다.

매우 빠른 블록 장치(고급 NVMe RAID, 2GB/s 쓰기, 4GB/s 읽기)가 설치된 바쁜 시스템 /data과 매우 느린 장치(회전하는 8TB 디스크가 있는 USB HDD, 50MB/s s 쓰기, 60MB/s 읽기) 설치 , I/O를 희생하지 않고 /backup프로세스 읽기 및 쓰기를 어떻게 제한할 수 있습니까 ?/backup/data

내가 아는 한, 문제는 Linux에만글로벌노브 dirty_background_bytesdirty_bytes.NVMe에 대해 이러한 제한을 합리적인 값(실제로는 약 2GB 및 4GB)으로 설정하면 특정 프로세스(예: rsync)가 USB에 많은 데이터를 쓰기 시작할 때까지 처리량은 괜찮습니다. 이 경우 dirty_background수신 USB 장치는 데이터로 채워지고 rsync더 이상 페이지가 더티되지 않습니다. 그러나 dirty_background이는 전역 제한이고 빠른 장치와 느린 장치 간에 공유되므로 빠른 장치에 쓰는 프로세스에서 상당한 속도 저하를 초래합니다 . 난 내가 기반을 잡을 수 있다는 걸 알아가장 느린시스템에 연결된 장치를 사용하면 큰 일시 중지를 방지할 수 있지만 더 빠른 장치를 위해 일부 처리량이 희생됩니다.

dirty_background_bytes단일 블록 장치에 해당하는 장치가 있습니까 ?속도를 늦추는 것은 정말 의미가 없습니다모두다른 프로세스의 /data속도 저하 및 액세스를 방지하기 위해 쓰기를 처리합니다 ./backup

cgroup이 작업을 수동으로 수행하는 방법이 있다는 것을 알고 있습니다 (프로세스별 I/O를 최대 한도로 제한하는 방법은 무엇입니까?). 그러나 각 블록 장치의 크기를 조정하고 전체 시스템 속도를 늦추기 전에 해당 장치에 액세스하는 모든 프로세스를 제한해야 합니다. 프로세스가 빠른 장치와 느린 장치 모두에 쓰는 경우 느린 장치에 너무 많은 데이터가 쓰여지는 경우에만 속도가 느려집니다.

관련 정보