![높은 부하를 유발하는 내부 SATA 장치의 성능 문제](https://linux55.com/image/145349/%EB%86%92%EC%9D%80%20%EB%B6%80%ED%95%98%EB%A5%BC%20%EC%9C%A0%EB%B0%9C%ED%95%98%EB%8A%94%20%EB%82%B4%EB%B6%80%20SATA%20%EC%9E%A5%EC%B9%98%EC%9D%98%20%EC%84%B1%EB%8A%A5%20%EB%AC%B8%EC%A0%9C.png)
노트북에 성능 문제가 있습니다. 사실, 최근에 설치해야 할 일이 너무 많아서 전체 시스템이 완전히 정지되는 경우도 있습니다.
먼저 몇 가지 일반 정보: 저는 현재 커널 버전 4.19.11-arch1-1-ARCH로 Archlinux를 실행하고 있습니다. 이 머신에는 8GB RAM과 2개의 내부 디스크(회전 디스크와 SSD)가 있습니다.
이제 회전 디스크의 일부 데이터에 액세스해야 합니다. (여기에 쓴 모든 내용은 회전에만 해당됩니다. SSD는 테스트되지 않았습니다.) 네트워크를 통해 디스크에서 데이터를 복사할 때 호스트 시스템이 거의 정지되는 것을 발견했습니다. 이는 그래픽 인터페이스가 응답하지 않으며 컴퓨터에 다시 액세스하려면 프로세스가 종료될 때까지 기다려야 함을 의미합니다. 마우스가 더 이상 화면에서 움직이지 않고 키보드 입력이 30분 이상 지연됩니다.
종료 후 디스크에서 몇 가지 테스트를 수행한 결과 간단한
ionice -c idle dd if=/dev/sda of=/dev/null bs=1M count=1000 status=progress
이 문제가 발생했습니다. 네트워크와는 아무 관련이 없습니다. 추가 조사(보기 top
등 ) uptime
를 free
통해 다음과 같은 결과가 나왔습니다.
- 대규모 교류는 이루어지지 않았습니다.
- IO 대기 상태에 있는 1~2개의 코어를 제외하면 CPU는 대부분의 시간 동안 유휴 상태입니다. (8코어 시스템에서는 20-30%)
- 충분한 RAM을 사용할 수 있습니다.
- 로드 평균(보류 중인 프로세스 수로 보고됨
uptime
)은 13이 넘는 높은 값으로 점프하고 그 상태를 유지합니다(오래 실행되는 평균도 이러한 높은 값으로 수렴됩니다). - IO 작업이 중단되면 기계가 다시 빠르게 반응하고 로드가 2~4 아래로 떨어집니다.
인터넷에서 정보를 좀 찾아보려고 했어요. 거기에서는 별로 발견되지 않았습니다. 현재 IO 스케줄러를 보는 팁만 찾았습니다. 기본적으로 mq-deadline
모든 디스크는 로 설정됩니다.
bfq
나는 다른 방법을 시도했는데 이것을 사용하는 전체 문제가 그 중 가장 적기 때문에 가장 잘 작동하는 것 같습니다 . 완전히 사라진 것은 아닙니다. 클래스로 ionice
인해 idle
전체 시스템 성능에 미치는 영향은 무시할 수 있을 정도라고 생각합니다. 실제로 시스템은 응답성을 유지했지만 1초 정도의 지연이 눈에 띄게 나타났습니다. 이전보다 나아졌지만 완벽하지는 않습니다.
최근 가상 머신 디스크의 포맷으로 인해 호스트 시스템이 완전히 잠겼습니다. 나는 어려운 길을 다시 시작해야 했다. bfq
최소한 포맷이 가능한 가상 디스크를 사용하세요.
기기가 더 이상 응답하지 않기 때문에 기기로부터 어떤 정보도 얻을 수 없습니다 dmesg
. 뒤에서 무슨 이상한 일이 벌어지고 있는지는 모르겠습니다. 이 문제를 알아내야 해요. 나는 커널에 버그가 있다고 가정하는 사람들을 인터넷에서 발견했습니다. 이것이 사실인지는 모르겠습니다. 내가 또 무엇을 할 수 있나요?