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?