몇 번의 대기/재개 주기 후에 X11이 화면을 절전 모드로 전환하는 것을 중지하는 이유는 무엇입니까?

몇 번의 대기/재개 주기 후에 X11이 화면을 절전 모드로 전환하는 것을 중지하는 이유는 무엇입니까?

몇 년 동안(~2012-2020) 여러 컴퓨터(다양한 연도의 AMD/Intel, S3/AMD/Intel 그래픽 카드)에서 X11에서 DDX와 관련이 없는 이상한 버그를 관찰했습니다.

때로는 몇 번의 절전( echo mem > /sys/power/state) 및 깨우기 주기 후에 X11이 모니터의 DPMS 설정을 "잊고" 화면을 무기한으로 유지합니다.

이 상태에서는 xset dpms force suspend(또는 - standby)이 제대로 작동합니다. 활동 감지 또는 시간 초과 관리에 버그가 있는지 궁금합니다.

문제가 표면화되는 데 몇 주가 걸리는 경우도 있고, 매우 빠르게 발생하는 경우도 있습니다. 문제는 며칠 전 재부팅을 하게 되면서 발생했습니다. 내 생각에 이 문제는 이 컴퓨터에서 이전에 한 번만 발생한 것 같습니다(약 1년 동안 겪었습니다).

글쎄, 어쩌면 이것은 실제로 경쟁 조건일 수도 있습니다. 응, 응.

엄격한 테스트를 위해 설정 가능한 값을 모두 기본 600(10분)에서 5초로 변경했습니다. 이제 xset q다음이 표시됩니다.

Screen Saver:
...
  timeout:  5    cycle:  5
...
DPMS (Energy Star):
  Standby: 5    Suspend: 5    Off: 5
  DPMS is Enabled
  Monitor is On

내 화면이 X 화면 보호기로 지워지지도 않고 DPMS 대기/일시 중지 상태로 들어가지도 않습니다.

디버깅을 어디서 시작할 수 있나요?

나는 내 자신의 X 복사본을 만들고, printf가능한 한 많은 를 추가하고, 항상 시스템 X가 아닌 내 X를 사용하는 것을 기억하려고 노력해야 할 것 같습니다... 하지만 떠나기 전에거기, 누군가가 내가 먼저 시도해볼 만한 흥미롭고 통찰력 있는 맛있는 정보가 있는지 궁금합니다.

감사해요:)

알아채다. 이 문제는 내 시스템에서 발생했습니다.지금, 다시 시작을 며칠 동안 연기할 수 있는지 알아보겠습니다. 결국 그것은 "Z가 있는 달"과 같습니다.

답변1

크롬 오류입니다1339361. 당신이 놀면어느Chrome(또는 Slack과 같은 Electron 기반 소프트웨어)에서 화면 보호기(DPMS 포함)는 프로세스가 종료될 때까지 비활성화된 상태로 유지됩니다.

확장 프로그램을 비활성화하면 MIT-SCREEN-SAVER도움이 될 것입니다.

$ sudo tee /etc/X11/xorg.conf.d/01-no-mit-screen-saver.conf <<EOM >/dev/null
Section "Extensions"
    Option    "MIT-SCREEN-SAVER" "Disable"
EndSection
EOM
$ reboot

MIT-SCREEN-SAVER비활성화되어 있는지 확인하십시오 .

$ xdpyinfo -queryExtensions | grep MIT-SCREEN-SAVER

Linux에서 화면 보호기를 일시 중지하는 방법에는 여러 가지가 있습니다. 비활성화해도 MIT-SCREEN-SAVER화면 보호기, DPMS 또는 YouTube 등의 wakelock에는 아무런 영향이 없어 계속해서 정상적으로 작동해야 합니다.

이 문제를 디버깅하는 동안 게임을 플레이할 때에도 Chromium이 화면 보호기를 비활성화하는 것처럼 보이는 또 다른 버그(제 생각에는)를 발견했습니다.보컬. 이것이 Outlook에서 새 이메일이 울릴 때마다 내 화면이 깨어나는 이유입니다. 하지만 그건다른이야기...

궁금하시다면 DPMS의 마법이 xorg-server그 안에서 일어납니다.DPMSSetDPMS를 호출하고SetScreenSaverTimer, 타이머를 시작합니다(또는 시작하지 않습니다!).


오류 방지 옵션으로 wakelock에 관계없이 DPMS를 강제로 열도록 하는 핵심 해결 방법을 제안할 수 있습니다. 분명히 긴 시간 초과가 필요합니다. 그렇지 않으면 중단 없이 영화를 볼 수 없습니다.

$ sudo apt install xprintidle
$ cat <<EOM >crontab
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
DISPLAY=:0
 
*/15 * * * *   t=`xprintidle` && [ $t -ge 7200000 -a $t -lt 9000000 ] && xset dpms force off
EOM
$ crontab crontab
$

관련 정보