ext4 jbd2 및 I/O 우선순위

ext4 jbd2 및 I/O 우선순위

6백만 개 이상의 파일, 4000개 이상의 디렉터리, 총 약 26GB의 데이터가 포함된 거대한 디렉터리를 삭제하고 싶습니다. 시간이 오래 걸린다는 것을 알기 때문에 ionice파일이 삭제되는 동안 다른 작업을 계속 수행할 수 있도록 I/O 우선순위를 유휴로 설정하는 경우가 많습니다.

time ionice -c3 rm -vrf /tmp/huge-folder

그러나 내 전체 데스크톱 환경은 현재 여전히 매우 느립니다. Google Chrome이 새 탭을 열고 페이지를 로드하는 데 오랜 시간이 걸리고 때로는 새 xterm 창을 여는 데 시간이 걸리기도 합니다. 요약하자면: 프로세스 I/O 우선순위를 낮춰도 아무런 이점을 얻지 못하는 것 같습니다 rm.

검사 결과 내가 원하는 I/O 우선순위를 가진 프로세스 iotop에서 일부 I/O 시간이 소요되는 것으로 나타났습니다 .rmidle

rm의 I/O

그러나 때때로 ext4의 로그 프로세스 및 소프트웨어 RAID 프로세스에 I/O 시간이 소요됩니다.

jbd2 및 raid의 I/O

문제의 원인이 될 수 있는 자체 기본 I/O 우선 순위를 어떻게 사용하는지 확인하세요. 실제로 는 다른 모든 데스크탑 프로세스의 기본 우선순위보다 높은 jbd2우선순위로 실행됩니다 .be/3be/4

다른 많은 질문그것이 무엇인지, 왜 I/O 시간을 소비하는지 묻고 대답하는 것은 jbd2내가 알고 싶은 것이 아닙니다. 내 질문은: 이 특정 시나리오에 대해 유휴 I/O 예약 우선순위를 실제로 얻을 수 있는 방법이 있습니까? 분명히, 지원하는 것은 미친 생각 ionice입니다 .jbd2

추가 설정 정보: 이는 3개의 회전 디스크가 있는 소프트웨어 raid10 상단의 ext4 파일 시스템에 있습니다. ext4는 기본 옵션으로 포맷되고 설치됩니다(다를 경우 Debian 기본값).

답변1

이 질문을 한 이후로 저는 Linux 커널에서 I/O가 어떻게 작동하는지에 대해 더 많이 배웠고 ionice대부분의 쓰기 작업에서는 작동하지 않는다는 결론에 도달했습니다.

읽기 작업은 대부분 동기식이며 쉽게 우선순위를 지정할 수 있습니다. 아마도 이것은 최적화, 집계 등을 허용하기 위해 나중에 (따라서 비동기식)까지 지연되는 경우가 많은 쓰기의 경우 훨씬 더 어려울 것입니다. 이 경로를 따라 좋은 정보를 전송하고 올바르게 집계하는 것이 쉽지 않다고 생각합니다.

원천:Linux ionice에 대한 몇 가지 참고 사항. 소스에서는 ioniceLVM이나 소프트웨어 RAID에서는 작동하지 않는다고 언급하지만 여전히 맞는지는 의심스럽습니다(블로그 게시물이 약간 오래되었습니다).

또한보십시오:ionice는 비동기 쓰기(예: 일반 쓰기)에 어떤 영향도 미치지 않습니까?

관련 정보