I/O 차단으로 인한 성능 저하를 어떻게 처리하나요?

I/O 차단으로 인한 성능 저하를 어떻게 처리하나요?

내 컴퓨터에 심각한 I/O 문제가 발생했습니다.

소프트웨어: Kali-rolling, Linux x86-desktop-1 4.12.0-kali2-amd64 #1 SMP Debian 4.12.13-1kali2 (2017-10-03) x86_64 GNU/Linux. 하지만 저는 기본 코어와 맞춤형 코어 등 다양한 코어를 보유하고 있습니다.

하드웨어 : 해당 하드웨어는 다음과 같습니다. Ryzen 1800X CPU, 16 GiB RAM, 최신 BIOS가 포함된 MSI X370 SLI PLUS(버전 3.6, 하지만 다른 3개도 시도함), M.2: Crucial® MX300 525GB M.2 SSD 및 256GB Samsung SSD 840 PRO.

문제: 이 문제는 사용자의 관점에서 먼저 설명하는 것이 가장 좋습니다.

Linux 커널 소스 트리와 같은 작은 파일을 많이 복사하고 있습니다. 이로 인해 상당한 속도 저하가 발생할 수 있으며 "ls" 바이너리 또는 "dmesg"와 같은 간단한 명령이라도 실행하는 데 15초 이상이 걸릴 수 있습니다. I/O 측면에서 전체 시스템이 정지되고 차단 항목이 I/O 대기열을 통과할 수 있을 때까지 모든 형태의 I/O 블록이 필요한 모든 것이 정지됩니다.

다음을 수행할 때 문제를 발견했습니다.

  • 네트워크를 통해 CIFS 리소스의 비디오 파일을 재생합니다. 이러한 형태의 I/O는 비디오 스트림에 1~2초의 지연 시간을 초래할 수 있습니다.
  • 웹 브라우저를 사용하여 네트워크를 통해 MP3 파일을 재생하면 오디오가 끊길 수 있습니다.
  • 특히 많은 작은 파일이 포함된 경우 SSD 또는 M.2 장치에 로컬로 무언가를 복사합니다.

이 문제는 OS를 설치한 이후부터 시작되어 지속되었습니다.

내 추론과 이 문제를 해결하려는 방법은 다음과 같습니다. 하드웨어는 여러 I/O 요청을 동시에 처리할 수 있어야 합니다. SSD와 물리적으로 분리된 M.2 장치를 사용해 보았지만 모두 동일한 문제가 있었기 때문에 이것이 모두 SSD/M.2 결함으로 인해 발생했다고 생각하는 것은 비합리적인 것 같습니다. 또한 특히 4.9, 4.12, 4.13.2, 4.13.10과 같은 여러 커널을 시도했기 때문에 기본 kali 커널에 이러한 특정 I/O 문제가 있다는 것은 불합리해 보입니다. 이 성능에 영향을 미치는 일부 BIOS 옵션이 있을 수 있다고 생각했지만 아무 것도 찾을 수 없었습니다. 어쨌든 저는 Set Defaults를 실행하고 버전 3.4, 3.5 및 3.6을 포함한 여러 BIOS 버전을 시도했습니다.

I/O 오류가 있는지 dmesg를 확인했는데 아무 오류도 없었습니다.

또한 Linux에는 여러 개의 I/O 스케줄러가 있다는 점도 고려했습니다.

$ cat /sys/block/sda/queue/scheduler 
noop deadline [cfq] 

스케줄러는 예를 들어 다음을 실행하여 변경할 수 있습니다.

echo "noop" > /sys/block/sda/queue/scheduler

자세한 내용은 이 질문을 참조하세요.https://stackoverflow.com/questions/1009577/selecting-a-linux-io-scheduler

하지만 noop, Deadline, CFQ를 시도해 보았는데 문제에 전혀 영향을 미치지 않는 것 같습니다.

또한 비휘발성 장치의 성능을 확인하고 싶습니다.

hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads: 1112 MB in  3.01 seconds = 369.69 MB/sec
hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads: 1122 MB in  3.00 seconds = 373.53 MB/sec

성능은 놀라운 것이 아니며 실제로 더 많은 것을 수행했어야 했습니다. 그러나 이러한 유형의 성능에도 이러한 문제가 존재해서는 안됩니다. 현재 겪고 있는 문제가 I/O 성능 저하와 관련이 있는지 확실하지 않습니다.

동일한 시스템에서 Gentoo를 실행하면 840 PRO 장치에서 다음과 같은 결과가 나타납니다( hdparm -t):

510.82 MB/sec
524.05 MB/sec

이 문제를 어떻게 디버깅해야 합니까? 문제가 무엇인지 아는 사람이 있습니까?

답변1

무슨 일이 일어나고 있는지 설명하지는 않지만 ionice드라이브 작업 및 tc(트래픽 쉐이핑) 네트워크 작업을 사용하여 문제를 해결하려고 시도할 수 있습니다.

관련 정보