저는 이 컴퓨터에서 Arch를 실행하고 있습니다.
3.40GHz i7 6코어(4930K)
16GB DDR3 1600MHz 메모리
Raid0의 Samsung 840 EVO SSD 2개(BTRFS raid 사용)
각각 약 2-4개의 코어와 2GB RAM을 갖춘 몇 개의 VM(2개 또는 3개)을 사용하여 Arch에서 VMware를 실행할 때 시스템이 무작위로 정지되기 시작했습니다. 몇 분마다 시스템이 10~30초 동안 멈췄다가 다시 움직이기 시작하고, VM을 종료할 때까지 30초 후에 다시 멈춥니다. 시스템이 정지되면 마우스는 여전히 정상적으로 움직이지만 호스트 컴퓨터의 응용 프로그램이 응답을 중지합니다. vmware가 응답하지 않고 Firefox(호스트 컴퓨터에서도 열려 있음)가 응답하지 않습니다.
정지가 발생했을 때 프로세스 모니터를 실행하면 vmware가 여러 코어를 소진했지만 동시에 사용하지 않은 다른 코어가 있음이 표시됩니다. 또한 RAM이 충분합니다. 가상 머신은 총 6GB를 사용하고 호스트에는 10GB가 남아 있습니다. 내 스왑 공간은 0이므로 스왑으로 인해 속도가 느려지지 않습니다.
파일 시스템 수준에서 btrfs로 인한 파일 조각화로 인해 가상 머신이 느리게 실행될 수 있다는 보고가 있습니다. 그러나 내가 아는 한 조각화는 기존 하드 드라이브에서만 문제가 됩니다. SSD에는 검색하는 읽기 헤드가 없으므로 파일이 심하게 조각화되더라도 상관하지 않습니다.
Debian 7을 실행할 때는 이런 일이 발생하지 않았으므로 하드웨어 문제가 아니라고 확신합니다.
시스템이 계속 정지되는 이유를 알아내기 위해 어떤 도구를 실행할 수 있습니까? 나는 top/htop 및 iotop을 시도했습니다(시스템이 정지되면 아무 것도 덮어쓰거나 읽히지 않습니다). btrfs가 쓰기/읽기에 문제가 있는지 알려줄 수 있는 활동 모니터는 없는 것 같습니다. 제가 시도할 수 있는 다른 것이 있나요?
답변1
btrfs에서트랩 페이지:
무작위 쓰기 횟수가 많은 파일은 심각하게 조각화되어(10000개 범위 이상) HDD가 손상되고 SSD 또는 대용량 RAM이 있는 시스템에서 CPU 로드가 몇 초 동안 과도하게 급증할 수 있습니다.
서버 및 워크스테이션에서 이는 데이터베이스 및 가상 머신 이미지에 영향을 미칩니다.
- nodatacow 설치 옵션은 여기에서 유용할 수 있으며 관련 문제가 있습니다.
...
- 증상으로는 btrfs-transacti 및 btrfs-endio-wri가 많은 CPU 시간을 차지하는 것(스파이크, 동기화로 인해 트리거될 수 있음) 등이 있습니다. filefrag를 사용하면 심하게 조각난 파일(압축 시 제대로 작동하지 않을 수 있음)을 찾을 수 있습니다.
Virtualbox에서 설명한 것과 비슷한 문제가 발생했습니다. btrfs 옵션은 nodatacow
내 시스템에 크게 도움이 되지 않습니다. 또한 자동 조각 모음 옵션(데스크톱 환경의 응용 프로그램 데이터베이스에 대해 가능한 솔루션으로 언급됨)을 시도했지만 동작을 허용할 만한 결과를 얻지 못했습니다.
마지막으로 btrfs 파티션과 그 파티션이 있던 논리 볼륨을 축소하고 새 LV를 생성하고 ext4로 포맷한 다음 해당 "파티션"에 있던 VM 디스크 이미지(VirtualBox)를 배치했습니다.
답변2
파티션에서 LUKS를 사용하지 않음으로써 문제가 완전히 해결되었습니다. 그래서 먼저 LUKS를 사용하는 대신 BTRFS를 사용하여 직접 파티션을 포맷했습니다.
다음 매개변수도 설치됩니다.
/dev/sda2 / btrfs rw,noatime,space_cache,compress=lzo,ssd,discard,autodefrag,commit=0,thread_pool=8 0 0
답변3
이는 커널 스레드가 발생하는 투명한 hugepage 문제일 수 있습니다.거대한 페이징, 문자 그대로 RAM을 채굴하여 조각 모음을 수행하거나 4k 페이지에서 거대한 페이지를 생성합니다.
시스템에 상당한 양의 RAM이 있는 경우 커널은 대용량 페이지를 활성화하기로 결정할 수 있습니다.
다음 두 커널 튜너블의 내용을 확인하세요.
/sys/kernel/mm/transparent_hugepage/enabled
/sys/kernel/mm/transparent_hugepage/defrag
내용이 이면 always
변경하여 never
CPU 스파이크/정지가 사라지는지 확인할 수 있습니다.