캐시를 사용할 때 디스크 I / O가 높습니까?


9

며칠 전에 디스크 I / O 대기 및 디스크 활동 감소 (대단한)를 발견했습니다. 그런 다음 캐시가 가득 차서 조각난 것을 알았습니다. 그런 다음 캐시를 플러시했습니다. 그 후 디스크 대기 시간과 디스크 활동이 이전 수준으로 올라갔습니다.

IOtop은 [jbd2 / sda2-8] 및 [flush-8 : 00]가 항상 디스크 사용량보다 높음을 보여줍니다. 여유 공간이 많은 Dell R210, 하드웨어 RAID 1 (H200)입니다 (총 16GB, 약 8GB는 버퍼 / 캐시).

(*) 캐시는 PHP 용 APC opcode 캐시로, PHP 스크립트 실행을위한 디스크 액세스를 줄입니다. 개발 인스턴스의 파일이 포함되어 캐시가 가득 차서 조각화되었습니다. 그 사실을 알았을 때 걸러 냈습니다.

문제는 이론적으로 디스크 I / O가 감소해야하는 이유는 무엇입니까? 아래는 munin의 일부 그래프입니다. 2 월 6 일부터 8 일까지 캐시가 가득 찼습니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 APC 캐시는 현재 정상입니다.

@ cyberx86의 설명에 따라 apc.mmap_file_mask를 주석 처리 한 후 변경하십시오.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

그리고 며칠 후 https://serverfault.com/a/362152/88934


2
이 그래프는 IO의 증가를 보여주지 않습니다.
psusi

1
파일 백업 메모리 매핑 (예 :)을 사용 apc.mmap_file_mask=/tmp/apc.XXXXXX하면 I / O가 높아질 수 있습니다. apc.mmap_file_mask공유 메모리 (예 :) /apc.shm.XXXXXX또는 /dev/zero(익명 mmapped 메모리) 를 사용하도록 설정하십시오 .
cyberx86

1
@psusi는 2 월 6 일 오후 12 시부 터 2 월 8 일 오후 12 시까 지 낮게 증가했습니다.
jcisio

@ cyberx86 방금 변경 (익명 mmapped 메모리를 사용하기 위해 그 줄을 주석 처리했습니다)과 같은 도움이됩니다. 몇 분 더 모니터하겠습니다. 감사.
jcisio 2012

2
@psusi 설명하지 않고 다시 시작할 수있는 여러 가지 문제가 있습니다 .1 / APC 캐시 누락 (그러나 PHP 파일에 대한 OS 캐시 적중, 디스크 I / O가 매우 적고 대기 시간이 적지 만 평균 I / O 시간이 더 큼) , 주로 MySQL InnoDB 트랜잭션 커밋) 2 / APC 캐시 적중했지만 APC는 파일을 사용하고있었습니다 (OS 캐시 미스, 이유를 모르겠습니다) I / O "-당신이 말하는 것은 그것과 완전히 반대입니다.
jcisio

답변:


10

파일 백업 메모리 매핑 (예 :)을 사용 apc.mmap_file_mask=/tmp/apc.XXXXXX하면 I / O가 높아질 수 있습니다.

apc.mmap_file_mask공유 메모리 (예 :) /apc.shm.XXXXXX또는 /dev/zero(익명 mmapped 메모리) 를 사용하도록 설정하십시오 . 설정을 정의되지 않은 상태로 유지하면 익명의 매핑 된 메모리를 사용하도록 기본 설정됩니다.

일반적으로 mmapped 파일은 대단합니다.

  • 무언가를 메모리에 완전히 저장하는 것과 비교하여, mmapped 파일은 일반적으로 더 적은 메모리를 필요로합니다
  • 파일에 무언가를 저장하는 것과 비교하여 mmapped 파일은 적은 디스크 I / O를 필요로합니다 (쓰기가 집계 될 수 있으므로).

그러나 메모리에 순수한 것을 저장하는 것과 비교할 때 파일이 지속적으로 변경되면 추가 I / O가 발생합니다. mmapped 파일을 사용하지 않는 단점은 지속성이 부족하다는 것입니다. 캐시는 메모리에만 저장되기 때문에 재시작 후에도 유지되지 않습니다.

따라서 캐시가 가득 차고 안정화되는 동안 디스크에 지속적으로 기록되어야하는 가장 큰 변화가 진행되고 있다고 제안 할 수 있습니다. 캐시가 가득 차면 각 오브젝트의 ttl은 캐시의 데이터가 넘겨지는 속도를 느리게하여 변경을 줄이고 디스크 쓰기를 줄입니다.


4

며칠 후 이제 그래프를 다시 작성하고 싶습니다. 변화는 그러한 상황을 크게 개선시킵니다. IO 서비스 시간을 제외한 모든 것을 줄입니다 (더 이상 싼 작은 PHP 파일 읽기가 더 이상 없기 때문에 생각합니다).

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

서버로드 (이미 상당히 낮아서 변경 사항을 발견하지 못했습니다).

여기에 이미지 설명을 입력하십시오


변경 사항을 알려주시겠습니까?
Mircea Vutcovici

질문 의견과 허용 된 답변을 읽으십시오. 나는 논평했다apc.mmap_file_mask=/tmp/apc.XXXXXX
jcisio

귀찮게해서 죄송합니다. mmap_file_mask 행을 주석 처리하는 데 부작용이 있습니까? 같은 문제가 발생합니다. 그러면 I / O 사용 문제가 명확하게 해결됩니다. 그러나 궁금한 점이 있습니다. 감사!
Jorge Leandro Perez

그 줄을 주석 처리하는 데 아무런 문제가 없었습니다.
jcisio
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.