저는 현재 디스크 I/O 요구 사항이 높은 Linux 기반 서버를 개발 중이며 최적의 성능을 위해 시스템을 미세 조정하기 위한 고급 전략을 찾고 있습니다. 기본적인 최적화를 구현하면서 더 깊고 기술적인 통찰력을 찾고 있습니다.
구체적으로 다음 사항을 알고 싶습니다.
Linux에서 디스크 I/O 성능을 크게 향상시킬 수 있는 고급 커널 수준 구성 및 조정 매개변수는 무엇입니까? I/O 스케줄러, 파일 시스템 조정, 블록 장치 설정과 같은 기능을 어떻게 활용합니까?
높은 I/O 환경에서 제대로 작동하는 특수 파일 시스템이나 스토리지 솔루션이 있습니까? 선택하거나 구성할 때 어떤 요소를 고려해야 합니까?
디스크 I/O 성능을 효과적으로 모니터링하고 분석하여 병목 현상이나 개선 영역을 식별할 수 있는 방법은 무엇입니까? I/O 작업에 대한 통찰력을 제공하는 특정 도구나 유틸리티가 있습니까?
특히 자주 액세스하는 데이터의 경우 디스크 I/O 대기 시간을 줄이고 처리량을 향상시키기 위해 어떤 고급 캐싱 및 버퍼링 전략을 구현할 수 있습니까?
사용 가능한 디스크 리소스를 최대한 활용하기 위해 I/O 집약적인 애플리케이션이나 워크로드(예: 데이터베이스 또는 높은 처리량 웹 서버)를 최적화하기 위한 모범 사례가 있습니까?
답변1
Red Hat에는 tuned
RHEL 7.9a부터 tuned-adm list
.show 가 표시됩니다.
Available profiles:
- atomic-guest - Optimize virtual guests based on the Atomic variant
- atomic-host - Optimize bare metal systems running the Atomic variant
- balanced - General non-specialized tuned profile
- cpu-partitioning - Optimize for CPU partitioning
- default - Legacy default tuned profile
- desktop - Optimize for the desktop use-case
- desktop-powersave - Optmize for the desktop use-case with power saving
- enterprise-storage - Legacy profile for RHEL6, for RHEL7, please use throughput-performance profile
- hpc-compute - Optimize for HPC compute workloads
- laptop-ac-powersave - Optimize for laptop with power savings
- laptop-battery-powersave - Optimize laptop profile with more aggressive power saving
- latency-performance - Optimize for deterministic performance at the cost of increased power consumption
- mssql - Optimize for MS SQL Server
- network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- oracle - Optimize for Oracle RDBMS
- powersave - Optimize for low power consumption
- server-powersave - Optimize for server power savings
- spindown-disk - Optimize for power saving by spinning-down rotational disks
- throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest - Optimize for running inside a virtual guest
- virtual-host - Optimize for running KVM guests
나는 관련성이 있는 것으로 보이는 다른 프로필과 tuned
같이 프로필에 대해 그들이 무엇을 했는지 조사할 것입니다 . 구성 파일에서 그런 일이 발생하는 것을 enterprise storage
원하지 않을 것입니다 ... 제 생각에는... 또는 어떤 유형의 에너지 절약 관련 작업도 마찬가지입니다.spindown-disk
I/O가 시스템의 RAM 용량을 초과하지 않는 한, 4소켓 고급 서버의 경우 768GB가 표준이고, 저렴한 워크스테이션의 경우 약 128GB입니다. 가장 좋은 방법은 설치를 폴더 tmpfs
로 만들어 직접 설치할 수 있는 것입니다. /data
[DDR4 또는 DDR5] RAM은 읽기/쓰기를 수행한 다음 그에 따라 해당 휘발성 데이터 위치를 관리합니다. /etc/fstab
비슷한 일을 하는 것입니다 tmpfs /data tmpfs defaults,size=512G 0 0
. 나는 그것을 그렇게 부르지 않을 것이다.고급 버퍼링 전략, 그러나 6Gbit/s 또는 12Gbit/s의 디스크 대신 RAM 전용 SATA/SAS를 사용하면 훨씬 더 빨라질 것이므로 그렇게 할 필요는 없다고 생각합니다.곡조단순히 적절한 전원 프로필을 실행하는 것 이상으로 Linux를 사용할 수 있습니다.대기 시간 성능바꾸다에너지 절약.
또한 실행하기에 가장 적합한 하드웨어를 선택하면 귀하가 묻는 많은 질문에 더 많은 답변을 얻을 수 있다고 생각합니다.동조리눅스. Linux 운영 체제는 기본적으로디스크 캐시tmpfs
그리고 실제 디스크에 쓰기/플러시를 하기 전에 가능한 한 많이 RAM에서 실행되므로 위에서 언급한 것과 정확히 일치합니다. 즉, 더 나은 성능을 원한다면 RAM을 늘리십시오. PC가 8GB 또는 16GB만 실행 중인 경우 서버의 경우 64GB 이상으로 업데이트하고, 128GB 미만인 경우 최대 설정은 768GB 이상입니다. 가장 빠른 RAM DIMM 타이밍을 지원합니다.