Firefox에서 탭의 CPU%를 모니터링합니다.

Firefox에서 탭의 CPU%를 모니터링합니다.

때때로 Firefox에서 여러 개의 탭이 열려 있을 때 탭 중 하나가 많은 CPU%를 소비하기 시작하고 어떤 탭이 원인인지 알고 싶습니다. 이 작업은 매우 수동적인 프로세스이므로 자동화할 수 있는 방법을 찾고 싶습니다.

Firefox를 구체적으로 모니터링하고 내가 알고 싶은 Firefox에 대한 사실만 간결하게 출력할 수 있는 응용 프로그램이 있었으면 좋겠습니다.

Firefox에서 실행 중인 각 탭에 대한 프로세스를 나열하고 각 탭 프로세스에 대해 다음 정보만 포함하도록 필터링된 명령/응용 프로그램을 찾고 있습니다.

  1. 프로세스 번호
  2. 탭 페이지 주소
  3. CPU 사용량
  4. 메모리 사용

또한 정보를 CPU %를 기준으로 내림차순으로 정렬하고 싶습니다.

기본적으로 htop과 같은 프로그램이 있었으면 좋겠지만 이는 Firefox에서 모니터링하고 싶은 관련 항목을 위해 특별히 설계되었습니다(관심하지 않은 모든 세부 사항은 무시함).

답변1

about:performanceFirefox의 주소 표시줄에 이를 입력 할 수 있습니다 . 그러면 pidFirefox의 각 탭 Resident Set sizeUnique Set Size. 아래에는 각 탭의 성능(예: )을 설명하는 줄이 있으며 performing well, 탭이 제대로 작동하지 않으면 거기에 표시되며 Close Tab거기에서 해당 탭을 닫는 옵션을 사용할 수 있습니다.

답변2

한 단계 더 나아가 프로세스를 자동화할 수도 있습니다.

  • CPU를 많이 사용하는 프로세스 자동 감지(브라우저 탭에서 실행 가능)
  • 일부/불합리한 임계값을 초과하는 경우 종료합니다.

다음은 제가 작성한 일반/사용자 정의 가능한 스크립트입니다. CPU 돼지 킬러브라우저(또는 다른 곳)에서 악의적이거나 오작동하는 스크립트 문제를 해결합니다.

스크립트는 두 가지 기본 기본 요소를 정의합니다.

  • process-list: 명령 + 매개변수 정규식을 기반으로 프로세스 선택
  • terminate-hogs: 필요한 것보다 더 많은 CPU를 소비하는 프로세스를 종료합니다(총 초 및 현재 %pct).

그리고 이 목표를 달성하기 위해 그것들을 사용하십시오.

다음은 git 저장소의 README.md에서 가져온 설명입니다.

CPU 돼지 킬러

명령 + 매개변수 정규식 및 CPU 소비를 통해 CPU를 많이 소비하는 프로세스를 종료합니다.

결함이 있는(또는 악의적인) 제3자 JavaScript 코드는 종종 브라우저와 컴퓨팅 리소스를 탈취합니다.

한번은 내 데스크톱에서 밤새도록 100% CPU로 실행되는 일부 프로세스를 발견했는데 JavaScript가 형편없어서 눈치채지도 못했습니다.

비자발적인 CPU 사용은 감염된 광고, 잘못 작성된 코드, 누군가가 암호화폐 채굴을 실행하기 위해 컴퓨터를 선택하게 만드는 "스크립트 드라이버" 등으로 인해 발생할 수 있습니다.

원하지 않는 전기 요금을 지불하게 하고 밤에 실행되는 많은 데스크탑과 브라우저를 곱하면 지구에도 매우 해롭습니다.

cpu-hog-killer는 밤에 정기적으로 실행하는 간단한 스크립트입니다. 다음과 같이 13분마다 cron에서 실행했습니다.

    # Add this line (or similar) using 'crontab -e'
    */13 0-7 * * *  ~/bin/cpu-hog-killer

그것은 식별한다확증하다CPU를 많이 차지하는 프로세스(주로 Chrome 또는 Firefox)가 감지되는 즉시 종료합니다. 임의의 CPU를 많이 사용하는 프로세스나 기본 브라우저 프로세스를 종료하지 않습니다. 구성된 + 에 따라 regex종료하겠다고 명시적으로 말한 프로세스 만 종료됩니다 CPU consumption parameters.

아침에 돌아와서 최악의 상황은 브라우저 탭에 가서 다음과 같은 메시지가 표시된다는 것입니다(예: Firefox의 경우).

    "Gah. Your tab just crashed."

어떤 웹사이트가 제목에 따라 오작동하는지 확인했고 브라우저에서 이를 허용했습니다(큰 버튼이 표시됨).

    [Restore This Tab]

내가 원한다면 실제로는 아무것도 잃지 않을 것입니다.

원하지 않는 상황에서 CPU를 사용할 수 있는 더 많은 응용 프로그램을 다루기 위해 스크립트에 더 많은 규칙을 추가할 수 있습니다. "기본" 섹션(스크립트의 마지막 몇 줄)을 살펴보고 필요한 경우 규칙을 더 추가하세요. 각 규칙은 다음과 같습니다.

    # [max_cpu_secs] [max_cpu_pct] are optional parameters to terminate-hogs
    # if not specified, default values will be used
    process-list '<some pattern>' | terminate-hogs [max_cpu_secs] [max_cpu_pct]

예를 들어 하나의 프로세스 탭만 종료하는 Firefox 규칙은 다음과 같습니다.

    process-list '[/]firefox -contentproc -childID.*tab$' | terminate-hogs

Chrome/Chromium의 경우 다음과 같습니다.

    process-list '[/]chrom(e|ium) --type=(renderer|utility)' | terminate-hogs

답변3

고쳐 쓰다 Bash에서 사용하기에 적합한 것 같습니다.

watch -n 1 "ps aux | grep firefox"

watch -n 0.1 "ps aux | grep firefox"

watch -n 1 "ps aux | grep firefox && free -m"

Tab에서 F5를 누르고 시청하세요.

이제 올바른 탭으로 탭을 종료하면 Tab is now crashed라는 메시지가 나타납니다.

파이어폭스에서는정보:성능맞습니다.

하지만 페이지 탭을 닫거나 열고 로드하면 bash에서 다음을 확인하세요.

$ pidof firefox

$ pidof firefox-esr

$ pgrep firefox 하나 또는 "n"개 프로필의 기본/상위 ID 가져오기

$ pgrep firefox-esr 하나 또는 "n"개 프로필의 기본/상위 ID 가져오기

얻다상위 코드그리고어린애 같은

$ ps aux | grep firefox

$ ps aux | grep firefox | grep tab

알다시피상위 버전 ID그리고 뭔가하위/탭

못 죽이는 것 같던데하위/탭오직상위 버전 ID.

ps -ef | grep firefox | wc -l

관련 정보