“du”프로그램을 덜 공격적으로 만들 수 있습니까?


21

우리는 du다수의 하위 디렉토리를 요약하고, 최악의 범죄자를 찾아 내고, 잠재적 문제를 발견하기 위해 급격히 증가하고있는 것들이 있는지 알아 내기 위해 결과를 사용 하는 정규직을 가지고 있습니다. diff스냅 샷과 비교하여 사용 합니다.

여러 개의 하위 디렉토리가있는 최상위 디렉토리가 있으며 각 디렉토리에는 각각 수만 개의 파일이있을 수 있습니다.

du -s이러한 맥락에서 " "는 IO를 매우 공격적으로 처리 할 수 ​​있으므로 서버가 캐시를 중단시키고 그 다음에 부적당 한 IO 영향이 발생할 수 있습니다.

원치 않는 부작용없이 동일한 데이터를 얻는 데 어떤 전략을 사용할 수 있습니까?


9
독일에서는 "Sie"로 바꿀 수 있습니다.
Federico Poloni

답변:


28

를보십시오 ionice. 보낸 사람 man ionice:

이 프로그램은 io 스케줄링 클래스와 프로그램의 우선 순위를 설정하거나 얻습니다. 인수가 없거나 -p 만 제공되면 ionice는 해당 프로세스의 현재 IO 스케줄링 클래스 및 우선 순위를 조회합니다.

du사용 가능한 가장 낮은 우선 순위 인 "유휴"I / O 클래스로 실행하려면 다음 과 같이하십시오.

ionice -c 3 du -s

이것은 du다른 프로세스의 I / O를 방해 하지 않아야합니다 . 다음과 같이 CPU 우선 순위를 낮추기 위해 프로그램을 재생하는 것을 고려할 수도 있습니다.

renice -n 19 "$duPid"

초기화시 두 가지를 모두 수행 할 수도 있습니다.

nice -n 19 ionice -c 3 du

5
기존 프로그램을 다시 사용하려면 renice대신에 전화해야합니다 nice. duionice와 nice로 시작하려면 두 프로그램을 모두 연결할 수 있습니다 nice -n19 ionice -c3 du.
jofel

niceCPU 자체가 아니라 I / O 스케줄러 우선 순위에도 영향을줍니다.
jordanm

1
@jordanm 내가 아는 한 (적어도 Linux에서는) niceCPU에 영향을 미칩니다 (I / O에 간접적으로 영향을 줄 수 있지만 I / O 스케줄러 우선 순위에는 영향을 미치지 않아야 함). 이 행동은 어디에서 보입니까? 어딘가에 기록되어 있습니까?
Chris Down


@jordanm 흠, 저 책이 있습니다. 나는 그것을 빠르게 훑어 보았고 263 페이지 만에 대한 자세한 세부 정보를 제공 nice했으며 CPU 기본 시간 양자에 대해서만 이야기합니다. 이 책의 어디에 있는지 아십니까? 나는 상태가가,가에 언급되지 않았 권위있는 소스를 읽고 관심이있을 것 man nice, man 2 nice, man 2 setpriority, info nice또는 info 'nice invocation'멀리 나는 세부 꽤으로 이러한 이동의 일부 때문에 방법에 대한 이상한 인, 말할 수있는 nice콜 작품 그리고 그것이하는 일.
Chris Down

4

단일 디렉토리에 많은 파일이있는 경우 많은 파일 시스템이 단일 디렉토리에서 큰 파일 트리를 처리하지 않기 때문에 I / O 스파이크가 발생할 수 있습니다. 더 많은 하위 디렉토리로 나누면 도움이 될 수 있습니다. 하나의 디렉토리에 10k 개 이상의 파일이 있고 이것이 문제를 일으키는 경우, 아마도 분할해야합니다.

디스크 사용량 추적에 대해서는 먼저 df사용량 값이 급상승하지 않으면 하위 디렉토리가 증가하지 않고를 건너 뛸 수 있습니다 du.

다른 대안은 파일 시스템이 지원하는 경우 지속적인 사용 추적을 유지하는 디스크 할당량 시스템 일 수 있습니다.


시스템은 빌드 팜이므로 디렉토리의 파일 수는 실제로 빌드하는 구성 요소의 개발자 수에 달려 있습니다. df제대로 작동하지 않습니다-문제는 스크립트를 정리했기 때문에 아무런 변화가 없지만 디스크 공간을 적극적으로 잡는 자동 작업에 대한 조기 경고를 놓쳤다는 것입니다. 우리는 zabbix를 사용하여 전체 디스크 사용을 모니터링하지만 일이 조금씩 진행되는 개별 디렉토리를 아는 것은 매우 중요합니다.
Danny Staple

0

또한 ionice디스크 액세스를보다 효율적으로 만들 수 있습니다. 이것은 실행하여 시도 할 수 있습니다

find /du/root -printf ""
find /du/root -perm 777 -printf ""

먼저 (아마도을 통해 ionice). 파일이 너무 많으면 작동하지 않습니다. 사용 가능한 RAM의 양에 따라 너무 많은 수가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.