Linux NFS 평균 로드 문제 해결 방법
컨텍스트 전환
Vmstat 의 출력 결과에서 입출력 항목의 block in 및 block out 은 빈번하지 않습니다. 시스템 항목의 치수당 인터럽트 수 (in) 및 초당 컨텍스트 전환 수 (cs) 가 특히 빈번합니다. 이로 인해 평균 부하가 특히 높습니다. 큰 방향의 근본 원인을 찾았다. 구체적으로, 어느 프로세스가 하향식으로 파일을 자주 중단하고 전환합니까?
다음은 pidstat -w 1 (초당 새로 고침 출력 컨텍스트 전환) 을 사용하고 출력은 다음 그림과 같습니다.
컨텍스트 전환
위 그림에서 볼 수 있듯이 cswch (자발적 컨텍스트 전환) 및 nvcswch (비자발적 컨텍스트 전환) 및 해당 명령이 있어 vsftpd 가 파일 교환을 많이 사용합니다. 여기에 표시된 cs 값과 총 가치는 여전히 큰 차이가 있음을 알 수 있습니다. 호스트에서 여러 vsftpd 프로세스가 시작되었기 때문에 pidstat 는 1 초 새로 고침 시 모든 내용을 표시하지 않으므로 pidstat -w 를 통해 여러 번 수집한 후 모든 vsftpd 프로세스가 사용하는 cs 값 오버레이가 vmstat 와 비슷하다는 것을 알게 되었습니다.
결과를 업무 인원에게 통보한 후 업무 인원의 추측과 일치한다. Ftp 는 디렉토리 구조가 깊고 파일 수가 많기 때문에 기존 디렉토리를 백업하고 단일 레벨 디렉토리를 다시 만든 후 업무 발견 로드 평균이 1 이하로 떨어졌습니다.
물론, 이것은 단지 하나의 처리 방법일 뿐이다. 이제 네트워크의 일부 프로그램은 이러한 변경을 쉽게 하지 않으며 프로세스가 CPU 간에 자주 전환하는 것을 허용하지 않습니다. 고정 CPU 를 설정하여 튜닝하는 방법도 있습니다. 다음 두 프로세스는 CPU 0-7 에서 실행됩니다.
[루트 @ www ~] # taskset-c-p6389
Pid 6389 의 현재 친연 관계 목록: 0-7
[루트 @ www ~] # taskset-c-p6580
Pid 6580 의 현재 친연 관계 목록: 0-7
Taskset 를 통해 CPU 0- 1 에서 고정 실행 가능:
[root@www ~]# taskset -c 0, 1 -p 6389
이렇게 하면 프로세스가 다음 CPU 코어로 전환될 때마다 현재 캐시 데이터가 새로 고쳐지므로 CPU 를 지정할 때 이러한 작업이 줄어들고 프로세스 처리 속도가 향상됩니다. 이는 이전 프로그램을 조정할 때 더 효과적입니다.