파일 크기가 적당하고, 디스크가 빠르고, 메모리가 충분할 때 "덜"이 CPU를 그렇게 많이 소비하는 이유는 무엇입니까?

파일 크기가 적당하고, 디스크가 빠르고, 메모리가 충분할 때 "덜"이 CPU를 그렇게 많이 소비하는 이유는 무엇입니까?

내가 읽고 있는 파일 중 하나에 병리적인 상황이 있는 것 같습니다 less. 파일 크기는 약 300MB이고 디스크는 빠르며(기본 NMVE) 스왑이나 이와 유사한 작업 없이 파일이 메모리에 쉽게 맞습니다.

less --version나에게주세요

less 563 (PCRE regular expressions)

아치 리눅스에서. 명령줄 인수( -R또는 없음) 없이 실행 중입니다 -S. 내가 읽고 있는 파일이 기록되고 있습니다.

용법:follow이 파일에서는 (누르기 F)를 사용하는 것이 일반적으로 느리지만 작동한다는 것을 알았습니다 . follow검색하는 동안 검색(강조 표시)을 활성화 하면 상황이 더욱 악화됩니다. 이제 다음을 검색 (something|something-else).*|.*warn한 다음 을 클릭 하면 F (follow)완전히 중지됩니다. 다른 터미널에서 종료해야 합니다.

나는 큰 파일에 대해 이와 같은 정규식을 아무 문제 없이 사용해 왔습니다. 뭔가 잘못될 수 있나요?

편집하다:보다 정확한 단계 및 정보:

  • 50MB 파일로 이루어지며 긴 줄이 필요하지 않습니다.
  • 또 다른 프로세스는 15초마다 파일에 콘텐츠를 추가합니다.

속도:

  • 파일을 열고 끝으로 이동합니다(Shift+g)
  • 검색 (something|something-else).*|.*warn( Pattern not found마지막에 말함)
  • 팔로우(Shift+f) -> CPU가 100%에 도달했지만 멈추지 않는 것 같습니다.
  • Shift+f 대신 검색 후 위쪽 화살표를 누르면 같은 일이 발생합니다.
  • 정규식을 해당 부분으로 줄이면( (something|something-else).*또는 .*warn작업에 몇 초가 걸리지만 여전히 느리지만 관리 가능)
  • htop의 상주 메모리는 400MB로 표시됩니다.
  • Ctrl+C는 중단할 수 없으며 외부에서 종료해야 합니다.

관련 정보