우리는 ~ 1000 대의 서버에 조정 (및 numad)을 출시 할 예정이며, 대부분은 NetApp 또는 3Par 스토리지의 VMware 서버입니다.
RedHats 문서에 따르면 virtual-guest
프로파일을 선택해야합니다 . 그것이하고있는 일은 여기에서 볼 수 있습니다 : tuned.conf
VMware와 NetApp / 3Par 모두 충분한 스케줄링을 수행해야하므로 IO 스케줄러를 NOOP로 변경하고 있습니다.
그러나 조금 조사한 후 왜 그들이 증가 vm.dirty_ratio
하고 있는지 잘 모르겠습니다 kernel.sched_min_granularity_ns
.
내가 vm.dirty_ratio
40 %로 증가 하는 것은 20GB 램을 가진 서버의 경우, vm.dirty_writeback_centisecs
처음으로 치지 않는 한 8GB가 주어진 시간에 더러워 질 수 있음을 의미합니다 . 그리고이 8GB를 비우는 동안 더티 페이지가 해제 될 때까지 애플리케이션의 모든 IO가 차단됩니다.
dirty_ratio를 증가시키는 것은 아마도 우리가 더 큰 캐시를 가지므로 피크에서 더 높은 쓰기 성능을 의미 할 것입니다. 그러나 다시 캐시가 채워질 때 IO가 상당히 더 긴 시간 (몇 초) 동안 차단 될 것입니다.
다른 하나는 그들이 증가하는 이유 sched_min_granularity_ns
입니다. 올바르게 이해하면이 값을 늘리면 epoch ( sched_latency_ns
) 당 시간 조각 수가 줄어들어 실행중인 작업이 작업을 완료하는 데 더 많은 시간을 소비한다는 것을 의미합니다. 스레드가 거의없는 응용 프로그램에는 매우 유용하지만 예를 들어 이해할 수 있습니다. 많은 스레드가있는 아파치 또는 다른 프로세스는 비생산적입니까?