Un prototipo di AppNap per Linux, realizzato da Rugginoso. Sembra molto meglio che cambiare niceness/io-niceness e più vicino a Mac OSX
Il collega Rugginoso ha creato un interessante prototipo di AppNap per Linux. Questa è solo l’idea di base per ora: utilizzare cgroup per ridurre il tempo di pianificazione della CPU per le finestre in background.
Sembra che trovare le finestre “in background” non sia così facile:
Devi parlare con il gestore delle finestre per vedere se la finestra è visibile, tenendo conto del desktop corrente, di qualsiasi finestra che occlude inclusa la mappa di trasparenza e di qualsiasi finestra semitrasparente (ad esempio: molte persone hanno terminali semitrasparenti). Probabilmente il modo migliore sarebbe applicare una patch ai gestori di Windows (o Wayland?) per esporre queste informazioni e quindi collegarle.
È necessario parlare con Pulse Audio per avere un elenco di app che emettono audio, incluso l’eventuale controllo del volume (in modo da separare le app che sono realmente udibili dagli utenti del computer da quelle connesse a PulseAudio ma che non emettono alcun suono al momento, o disattivato dall’utente) e qualsiasi destinazione audio di rete (PulseAudio può eseguire il tunneling dell’audio tramite TCP).
Quindi, sarebbe utile collegarsi a Chromium in qualche modo, per rilevare le schede visibili (e i relativi processi) e le schede invisibili (da limitare). Non sono sicuro di quale sia il modo migliore, probabilmente semplicemente esponendo alcune API da AppFap e quindi chiamandole da Chromium.
Anche il nostro collega DVD ha suggerito un ulteriore miglioramento: se il portatile è alimentato a batteria, l’impostazione cgroup è quella corretta, ma quando il portatile è acceso, potrebbe essere comunque interessante modificare la gradevolezza e l’io-niceness dei processi in background per aumentare reattività delle applicazioni in primo piano. I programmatori sanno come eseguire “nice make -j4”, ma gli utenti potrebbero sentirsi frustrati da una codifica video in background che rallenta la navigazione sul Web, quindi anche se non stai cercando di risparmiare batteria, potrebbe comunque essere positivo per l’esperienza dell’utente desktop.