%20%EB%94%94%EC%8A%A4%ED%81%AC%20%EC%84%B1%EB%8A%A5%20I%2FO(Debian%2FProxmox).png)
요약
Proxmox VE 7(Bullseye)의 ZFS SSD 미러에서 I/O 성능이 크게 변동하는 것을 확인했습니다. 나는 혼자서 그것을 추적하기에는 너무 초보자입니다.
세부
이는 실제 작업에서 매우 눈에 띄게 낮은 성능이므로 단순히 인위적인 벤치마크가 아닙니다. 하지만 진단을 돕기 위해 다음을 실행 중입니다.
sysbench fileio --file-test-mode=rndrw run
VM이 활성화되지 않은 상태에서 Proxmox 터미널에서 "베어메탈"을 실행하고 있습니다. 결과는 매우 다양합니다. 다음은 두 가지 예입니다.
File operations:
reads/s: 2316.07
writes/s: 1544.08
fsyncs/s: 4949.70
Throughput:
read, MiB/s: 36.19
written, MiB/s: 24.13
General statistics:
total time: 10.0062s
total number of events: 88040
Latency (ms):
min: 0.00
avg: 0.11
max: 35.66
95th percentile: 0.65
sum: 9947.54
Threads fairness:
events (avg/stddev): 88040.0000/0.00
execution time (avg/stddev): 9.9475/0.00
그리고
File operations:
reads/s: 22.60
writes/s: 15.07
fsyncs/s: 56.98
Throughput:
read, MiB/s: 0.35
written, MiB/s: 0.24
General statistics:
total time: 10.6162s
total number of events: 877
Latency (ms):
min: 0.00
avg: 11.43
max: 340.62
95th percentile: 77.19
sum: 10020.19
Threads fairness:
events (avg/stddev): 877.0000/0.00
execution time (avg/stddev): 10.0202/0.00
보시다시피 총 이벤트 수가 10,000배 증가하고 대기 시간이 엄청나게 증가합니다. 이러한 스윙은 "일회성"이 아닙니다. 이런 종류의 극단 사이를 끊임없이 오가고 있습니다.
간단한 하드웨어 문제를 좁히려고 최선을 다했습니다. 두 SSD 모두 smartctl에 100개가 모두 포함된 새 제품입니다. SATA 케이블을 교체했습니다. 단일 드라이브 문제를 파악하기 위해 미러 성능을 저하시킨 상태에서 실행했습니다. 드라이브를 별도의 SATA 컨트롤러로 옮겼습니다. 나에게 다른 결과를 주는 것은 없습니다.
비슷한 방식으로 구성된 두 번째 서버가 있지만 미러에는 오래된 (그리고 비교할 수 없는) SSD가 있습니다. 이 문제가 표시되지 않습니다. 그러나 서버 하드웨어는 다릅니다. 좋지 않은 결과는 아래 설명된 시스템에서 비롯됩니다. "정상"으로 보이는 결과는 E3-1275v2를 사용하여 변환된 오래된 PC에서 나온 것입니다.
제가 바라는 것은 이 문제를 진단하는 데 도움이 되는 팁입니다. 문제는 대기 시간에 있는 것 같습니다. 이 문제의 원인은 무엇입니까? 다음 단계는 무엇입니까?
미리 감사드립니다!
체계 (도움이 된다면)
- MB: 슈퍼마이크로 X9DRi-F
- CPU: 듀얼 제온 E5-2650 v2
- RAM: 128GB(8 x 16GB)
- SATA 컨트롤러: 온보드 SATA 3(별도의 SATA 2도 테스트함)
- SSD: 1GB TeamGroup SATA 2개(예, 저렴하지만 괜찮을 것입니다)
- PCIe 카드:
- 멜라녹스 MCX312B
- LSI SAS9207-8i(마운트 해제된 8개의 디스크에 연결된 HBA...VM으로 전달됨)
- Nvidia GTX 750(VM으로 전달됨)
답변1
어제 새로운 설정에서 비슷한 일이 일어났습니다. 32GB RAM과 ZFS 미러로 구성된 2x SSD Crucial BX500(소비자 등급)을 갖춘 Intel 11500의 Proxmox VE 7입니다.
SSD에 1GB의 0을 쓰는 방법으로 벤치마크를 수행했는데 dd
속도가 5MB/s로 실행되었습니다( dd
벤치마킹에는 좋지 않다는 것을 알지만 여전히...). 벤치마크 중에는 iostat
활용도가 100%였습니다. 제 경우에는 SSD를 잘라내서 성능 문제를 해결했습니다. 를 사용하여 강제로 사용할 수 zpool trim rpool
있으며 를 사용하여 자동 트림을 활성화할 수 있습니다 zpool set autotrim=on rpool
. 디스크를 정리한 후 벤치마크를 다시 실행했는데 7초(153MB/s)로 실행되었습니다.
성능을 향상시킬 수 있는 방법을 찾는 과정 에서 권장되는 대로 xattr
설정 했습니다.sa
프록시목스 위키zfs_arc_min
그리고 / zfs_arc_max
및 기타 커널 매개변수를 조정했습니다 .
이것이 당신에게도 효과가 있기를 바랍니다.
답변2
SSD의 4096 섹터에 맞춰 ashift=12로 SSD에 zfs 풀을 생성해야 합니다.
현재값 확인
zpool get all pool_name | grep ashift
또한 파티션 정렬을 1MB(2048 512바이트 섹터)로 확인하세요.
답변3
zfs는 쓰기 중 복사 fs입니다. 값싼 SSD에는 매우 나쁩니다. 이 SSD를 안전하게 삭제하여 Windows 시스템에서 직접 테스트하고 전체 쓰기 테스트를 수행할 수 있습니다(HD Tuning이 할 수 있다고 생각합니다). SLC \ RAM이 부족할 때 이 SSD의 성능이 어떤지 확인할 수 있습니다... 매우 열악합니다... SATA의 경우 500+ 대신 50-70MB/s 정도입니다. 또한 일부 저렴한 SSD는 자체 RAM 모듈이나 SLC 캐시 대신 시스템 RAM을 사용하는데 이는 zfs에 좋지 않습니다. SSD를 980 pro로 변경하여 해결한 것과 유사한 문제가 이 도움말에 있었으면 좋겠습니다(그러나 비용 문제로 인해 크기가 더 작음).