저는 Linux Mint와 Dell XPS 15를 업무용 노트북으로 사용하고 있으며 Gradle을 사용하여 대규모 Android 앱을 구축하고 있습니다.
모든 최적화 후에도 사용 가능한 거의 모든 RAM(16GB)을 사용하고 스왑 파일에서 SWAP을 사용하기 시작합니다(스왑 파티션을 사용해야 할까요?). 이로 인해 I/O 속도가 높아지고 Cinnamon(및 기타 모든 애플리케이션)이 정지됩니다.
또한 I/O가 이러한 문제의 원인인지 테스트해 보았고 dd
I/O 시스템에 로드를 생성하는 명령을 실행해도 동일한 문제가 발생한다는 사실을 발견했습니다. (예를 들어 Mac OS에서는 이 동작을 재현할 수 없습니다.)
deadline
I/O 스케줄러 유형을 다음으로 변경해야 하는데 파일 에 옵션 /sys/block/nvme0n1/queue/scheduler
만 포함되어 있음 을 발견했습니다 none
. 내가 이해하기로는 이런 뜻이다.https://www.thomas-krenn.com/en/wiki/Linux_Multi-Queue_Block_IO_Queueing_Mechanism_(blk-mq)프레임워크를 사용하면 아무 것도 변경하면 안 됩니다.
질문:I/O 로드 중에 이러한 정지 문제를 해결하려면 어떻게 해야 합니까? 아마도 더 많은 정보를 얻으려면 어떤 지표를 분석해야 할까요?
환경:
OS: Linux Mint 18.3 Cinnamon 64-bit
Cinnamon: 3.6.7
Linux Kernel: 4.13.0-38-generic
답변1
모든 최적화 후에도 여전히 거의 모든 사용 가능한 RAM(16GB)을 사용합니다.
그것- WHO? 일반적으로 1970년대 이후 설계된 모든 범용 운영 체제는 사용 가능한 RAM을 모두 사용하거나 대부분을 사용하여 느린 저장소 콘텐츠를 집중적으로 캐시합니다. 만약에그것방법VM 캐시뭐가 문제 야? 실행 free -m
하고 출력을 살펴보세요. "+/- 캐시/버퍼"라는 특별한 표시가 있었는데, 이는 되돌릴 수 없게 사용되지 않았음을 암시합니다.메모리 부족이 있으면 캐시가 줄어듭니다..
신입사원들의 흔한 오해인데..
I/O 스케줄러 유형을 마감일로 변경해야 한다는 것을 알았습니다.
스케줄러는 HDD와 같은 느린 장치에 적합합니다. SSD/NVME를 사용하면 이는 추가 오버헤드일 뿐입니다. 검색 시간을 줄이는 데 큰 역할을 하는 HDD와 달리 요청을 재정렬해도 이점이 없으므로 요청을 대기열에 넣을 필요가 없습니다.
I/O 로드 중에 이러한 정지 문제를 해결하려면 어떻게 해야 합니까?
여기에는 마인드 리더가 없습니다 (예외적으로 나는 다른 사람들이 질투하지 않도록 내 재능을 숨기는 것을 선호한다.)은 dd
다양한 방식으로 실행될 수 있습니다. 정확히 어떻게 작동하는지 보여주는 스니펫을 추가해 보는 것은 어떨까요?
PS 일반적으로 특정 드라이버 문제가 해결되거나 해결되지 않을 수 있으므로 커널 업데이트를 권장할 수 있습니다.