30 분 가동 시간 후 sync / fsync 호출 속도가 느려집니다.

alex.p

로모그래퍼 : 우분투 14.04를 사용하여 가동 시간 30 분 후 하이브리드 SSD 내가 사용하는 IO를 차단하는 많은 프로세스를 참조하십시오 iotop. 이것은 디스크 쓰기 중입니다. 예를 들어 gedit에서 빈 파일을 열고 닫으면 dconf 쓰기 설정으로 인해 종료하는 데 2 ​​초가 걸릴 수 있습니다. 이는 다른 앱에도 유사한 방식으로 영향을 미칩니다. 전체 시스템을 상당히 느리게합니다.

strace를 사용하여 이것을 fsync 호출로 다시 추적하고 거기에서 sync 명령을 사용하여 재현 할 수있었습니다.

요약하자면, 단순히 sync터미널에서 반복적으로 실행 하면 1 ~ 2 초 정도 걸리지 만 가동 시간은 30 분 후에야합니다.

이를 증명하기 위해 동기화를 실행하는 데 걸린 시간에 대한 가동 시간을 초 단위로 출력하는 스크립트를 만들고 매초마다 실행했습니다.

while true;
do
cat /proc/uptime | awk '{printf "%f ",$1}'; /usr/bin/time -f '%e' sync;
sleep 1;
done;

위의 스크립트를 실행하고 한 시간 정도 기다린 다음 (시스템이 유휴 상태로 유지됨) gnuplot에 결과를 플로팅했습니다 (y = 동기화 실행 시간, x = 가동 시간 (초)).

가동 시간에 대해 플롯 된 동기화 시간

그래프가 급등하는 시점은 약 1780 (1780/60 = 약 30 분)입니다.

스크립트를 제외하고는 현재 디스크에 아무것도 쓰지 않아야합니다. 따라서 첫 번째 동기화 후 페이지 캐시에 아무것도 없어야합니다. 이후의 각 동기화는 대략 100 바이트가 될 스크립트에 기록되는 내용을 정확히 기록합니다. 그래서.

이 문제는 재부팅 후에도 지속됩니다. 예를 들어, 속도 저하를 위해 30 분을 기다렸다가 재부팅하면 속도 저하가 계속 발생합니다. 전원을 끄고 재부팅하면 30 분 후까지 문제가 사라집니다.

또 다른 호기심은 위의 그래프를 조사하고 감속이 발생하는 영역을 확대했을 때 다음과 같은 결과를 얻었습니다.

가동 시간에 대해 플롯 된 동기화 시간, 확대

최고점과 최저점은 반복됩니다. 이것은 최저점에서 최저점까지 거의 정확히 10 초마다 발생하며, 최고점은 내려갈 때 꼬임도 발생합니다.

속도 저하 전에 hdparm 테스트 ( hdparm -t /dev/sdahdparm -T /dev/sda) 도 실행했습니다 .

/dev/sda:
Timing cached reads:   23778 MB in  2.00 seconds = 11900.64 MB/sec
/dev/sda:
Timing buffered disk reads: 318 MB in  3.01 seconds = 105.63 MB/sec

감속 중 :

/dev/sda:
 Timing cached reads:     2 MB in  2.24 seconds = 915.50 kB/sec
/dev/sda:
Timing buffered disk reads: 300 MB in  3.01 seconds =  99.54 MB/sec

실제 디스크 읽기는 영향을받지 않지만 캐시 된 읽기는 영향을 받는다는 것을 보여 주면 이것이 결국 HD가 아닌 시스템 버스와 관련이 있음을 의미 할 수 있습니까?

내가 시도한 솔루션은 다음과 같습니다.

  • HD의 스핀 다운 설정을 변경하면 HD가 절전 모드로 전환 될 수 있습니다.

    hdparm /dev/sda -S252 #(set it to 5 hours before spindown)
    
  • Change the filesystem's journalling type to writeback rather than ordered so that we get performance improvements - this isn't solving the problem though as it doesn't explain the 30 minutes slowdown-free uptime.

  • Disabled CRON as it seems to be occuring after a round 30 minutes.

  • CPU usage is fine and is completely idle so no processes can be blamed however I've tried shutting down every service including the session manager (lightdm) this does nothing as I believe the issue is lower level.

  • Analysing any new processes coming in at 30 minutes indicates no changes - I've diffed the output of PS before and after and there's no difference.

This only started occuring about 2 weeks ago, nothing was installed and no updates were done around that time. I'm thinking this issue is much lower level so would really appreciate some help here as I'm clueless, even pointing me in the right direction would be helpful - for example is there a way to examine what's being flushed out the page cache?

Write caching is enabled on the disk in question, I've also tried disabling write barriers. SMART data on the HD indicates no problems with the HD itself however I have my suspicions it's the HD doing something mysterious as it persists after reboots.

EDIT:

I've done :

watch -n 1 cat /proc/meminfo

... to see how the memory changes particularly looking at the dirty row and the writeback row which I believe is the HDs disk buffer. They all stay at zero for the most part highest being probably 300kb. Calling sync flushes these as expected back to 0 but during the slowdown calling sync when there is zero dirty pages and zero kb in the disk buffer still locks IO. What else could sync be doing if there's nothing to flush out the page cache and write cache?

Kjetil Jorgensen

The symptoms are very consistent with a mostly saturated IO system, however having for the most part ruled out IO load from the OS/userspace side, another possibility is the drive running self-tests on itself, which may include reading from all the sectors. This should be queryable/tunable from smartctl (At least one place being smartctl -c for querying).

오고 가고 갑자기 시작된 이유는 다음과 같습니다.

  • 드라이브는 수명의 특정 단계 (기록 된 섹터 수, 회전 시간 등)를 통과했으며 드라이브의 펌웨어가 이러한 스캔 중 하나를 트리거했습니다.
  • 나는 이것이 또한 smartctl을 통해 트리거 될 수 있다고 생각하므로 일부 자동화 된 프로세스가 트리거 할 수 있습니다.
  • 이러한 스캔 중 하나가 진행 중이거나 시작된 것으로 표시되고 드라이브가 일정 시간 동안 전원을 켰을 때 드라이브가 처음부터 다시 트리거되거나 중단 된 지점에서 다시 시작됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

30 분 가동 시간 후 sync / fsync 호출 속도가 느려집니다.

분류에서Dev

MacOS Sierra 이후 Django 테스트 속도가 느려집니다.

분류에서Dev

30 분 후 Derby 데이터베이스가 느려짐

분류에서Dev

매시간 시작시 30 분마다 실행 된 후 30 분 후에 실행되도록 Firebase Cloud 함수를 예약합니다.

분류에서Dev

많은 삽입 후 neo4j 속도가 느려집니다.

분류에서Dev

Dateformat은 시간에 30 분을 추가합니다.

분류에서Dev

close (2) 후 fsync (2) 호출

분류에서Dev

jQuery JSON 구문 분석 속도가 느려 집니까?

분류에서Dev

removeFromSuperlayer를 호출 한 후에도 CALayer가 계속 표시됨

분류에서Dev

가장 가까운 30 분으로 반올림하고 싶습니다. 즉, 11:15에 도착하여 11:50을 떠나도 2 시간이 아닌 1 시간 30 분 동안 자동차 요금이 부과됩니다.

분류에서Dev

viewDidLoad가 호출 된 후 viewcontroller의 속성이 사라집니다.

분류에서Dev

"월-목, 일 오전 11시 30 분-오후 10시 \ / 금-토 오전 11시 30 분-오후 10시 30 분"문자열에서 주중 시간과 함께 개관 일 및 휴무일 목록을 가져 오는 방법

분류에서Dev

샘플링 속도가 다른 시간 정렬 시간 신호

분류에서Dev

목표 c의 현재 시간에 30 분을 추가합니다.

분류에서Dev

sendTransaction 네트워크가 15-20 분 동안 유휴 상태가 된 후 호출되면 실패합니다.

분류에서Dev

Virtualbox에서 다른 OS를 실행하면 컴퓨터를 중지 한 후 속도가 느려 집니까?

분류에서Dev

무언가에 연결하려고 할 때 Word의 시작 속도가 느려집니다.

분류에서Dev

무언가에 연결하려고 할 때 Word의 시작 속도가 느려집니다.

분류에서Dev

30 분 후에 다시 열면 내 Android 앱의 영구 데이터가 손실됩니다.

분류에서Dev

PHP 이벤트 예약 : 30 분씩 증가하는 시간은 1 시간입니다.

분류에서Dev

100 명의 동시 사용자가 30 분 동안 서버에 접속하도록 Jmeter 환경을 설정하는 방법은 무엇입니까?

분류에서Dev

Ubuntu 18.04 Wifi가 30 분 후 작동을 멈춤

분류에서Dev

쉼표 (,)로 분리 된 호출 후 배열이 비어 있어도 문자열 배열 길이가 1로 표시됩니다.

분류에서Dev

finish ()를 호출 한 후에도 Custom CameraActivity가 화면에 표시됩니다.

분류에서Dev

시간에 5 시간 30 분을 추가하는 방법은 무엇입니까?

분류에서Dev

약간의 코드 추가 후 게임 속도가 느려짐 (파이 게임)

분류에서Dev

30 분 동안 2 시간마다 크론 작업 실행

분류에서Dev

Android 원형 진행률 표시 줄이 진행되면 속도가 느려집니다.

분류에서Dev

PL / SQL-프로 시저 인수를 확인하면 실행 속도가 느려집니다.

Related 관련 기사

  1. 1

    30 분 가동 시간 후 sync / fsync 호출 속도가 느려집니다.

  2. 2

    MacOS Sierra 이후 Django 테스트 속도가 느려집니다.

  3. 3

    30 분 후 Derby 데이터베이스가 느려짐

  4. 4

    매시간 시작시 30 분마다 실행 된 후 30 분 후에 실행되도록 Firebase Cloud 함수를 예약합니다.

  5. 5

    많은 삽입 후 neo4j 속도가 느려집니다.

  6. 6

    Dateformat은 시간에 30 분을 추가합니다.

  7. 7

    close (2) 후 fsync (2) 호출

  8. 8

    jQuery JSON 구문 분석 속도가 느려 집니까?

  9. 9

    removeFromSuperlayer를 호출 한 후에도 CALayer가 계속 표시됨

  10. 10

    가장 가까운 30 분으로 반올림하고 싶습니다. 즉, 11:15에 도착하여 11:50을 떠나도 2 시간이 아닌 1 시간 30 분 동안 자동차 요금이 부과됩니다.

  11. 11

    viewDidLoad가 호출 된 후 viewcontroller의 속성이 사라집니다.

  12. 12

    "월-목, 일 오전 11시 30 분-오후 10시 \ / 금-토 오전 11시 30 분-오후 10시 30 분"문자열에서 주중 시간과 함께 개관 일 및 휴무일 목록을 가져 오는 방법

  13. 13

    샘플링 속도가 다른 시간 정렬 시간 신호

  14. 14

    목표 c의 현재 시간에 30 분을 추가합니다.

  15. 15

    sendTransaction 네트워크가 15-20 분 동안 유휴 상태가 된 후 호출되면 실패합니다.

  16. 16

    Virtualbox에서 다른 OS를 실행하면 컴퓨터를 중지 한 후 속도가 느려 집니까?

  17. 17

    무언가에 연결하려고 할 때 Word의 시작 속도가 느려집니다.

  18. 18

    무언가에 연결하려고 할 때 Word의 시작 속도가 느려집니다.

  19. 19

    30 분 후에 다시 열면 내 Android 앱의 영구 데이터가 손실됩니다.

  20. 20

    PHP 이벤트 예약 : 30 분씩 증가하는 시간은 1 시간입니다.

  21. 21

    100 명의 동시 사용자가 30 분 동안 서버에 접속하도록 Jmeter 환경을 설정하는 방법은 무엇입니까?

  22. 22

    Ubuntu 18.04 Wifi가 30 분 후 작동을 멈춤

  23. 23

    쉼표 (,)로 분리 된 호출 후 배열이 비어 있어도 문자열 배열 길이가 1로 표시됩니다.

  24. 24

    finish ()를 호출 한 후에도 Custom CameraActivity가 화면에 표시됩니다.

  25. 25

    시간에 5 시간 30 분을 추가하는 방법은 무엇입니까?

  26. 26

    약간의 코드 추가 후 게임 속도가 느려짐 (파이 게임)

  27. 27

    30 분 동안 2 시간마다 크론 작업 실행

  28. 28

    Android 원형 진행률 표시 줄이 진행되면 속도가 느려집니다.

  29. 29

    PL / SQL-프로 시저 인수를 확인하면 실행 속도가 느려집니다.

뜨겁다태그

보관