il caffeinato non può impedire la visualizzazione del sonno

6

Ho una flotta di 7 macbook pro che esegue mac osx 10.10, 10.11 e 10.12 e 3 mac pro's mac os 10.13 ("alta sierra"). Su tutti i sistemi, l'ho impostato per non dormire mai sul sistema o sul display. Stranamente, questo non è sufficiente, quindi uso anche la caffeina per prevenire il sonno. Sui sistemi 10.13, tuttavia, lo schermo continua a dormire, non importa cosa cerco. Ciò riguarda due cose:

  • i miei test di opengl si bloccano
  • "osascript -e" indica all'app "Eventi di sistema" per riavviare "" si blocca

Poiché solo il display è addormentato, posso ancora ssh e guardarmi intorno.

Attualmente eseguo il mio script sotto caffeinate -dsiu -t 31536000, e quando si blocca, evidentemente ho ancora tutte le asserzioni corrette in corso:

$ pmset -g assertionslog
2017-11-20 19:34:27 -0800 : Showing all currently held IOKit power assertions
Assertion status system-wide:
BackgroundTask 0
ApplePushServiceTask 0
UserIsActive 1
PreventUserIdleDisplaySleep 1
PreventSystemSleep 1
ExternalMedia 0
PreventUserIdleSystemSleep 1
NetworkClientActive 1

e tuttavia il display è in DevicePowerState 1:

$ ioreg -n IODisplayWrangler | grep -i IOPowerManagement
| | "IOPowerManagement" = {"DevicePowerState"=1,"CapabilityFlags"=0,"CurrentPowerState"=1,"MaxPowerState"=4}

Eseguendo un altro caffeinate -u si riattiva il display e lo si mette in DevicePowerState 4 per 15 secondi circa, quindi torna in stato di stop e DevicePowerState 1, anche se con time-time si prolunga il timeout. Ho anche provato a ripetere l'argomento -t dopo ogni asserzione (nel caso in cui la manpage confusa lo avesse significato).

Per salvare "osascript -e 'dire all'app" Eventi di sistema "per riavviare'", Devo emettere "caffeinate -u". "caffeinate -d" o "caffeinate -i" non sono sufficienti.

Vedi i miei commenti all'indirizzo link per ulteriori dettagli.

Suppongo che dovrei usare lldb per ottenere un backtrace da un test opengl appeso, capire quale API è appesa e quindi creare un'app minima che imposta l'asserzione di risparmio energia appropriata, dorme un po ', quindi chiama l'API sospesa . Proverò a farlo quando ne avrò la possibilità.

Per ovviare a questo problema, attualmente lo ho in uno script in background:

while true
do
   caffeinate -ud sleep 10
done

ma non è abbastanza; CurrentPowerState scende a 1 frequentemente acceso tutti i sistemi (anche se penso che solo i sistemi 10.13 dormano effettivamente mostra e appende i miei test).

Qualcun altro ha incontrato questo? Qualche suggerimento su come posso diagnosticare ulteriormente?

    
posta Dan Kegel 21.11.2017 - 17:31
fonte

0 risposte

Leggi altre domande sui tag