Уменьшаем аппетит Skype по потреблению CPU и батареи ноутбука.

Автор CoolAller, 03 февраля 2015, 02:42:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

CoolAller

Возможно многие замечали, что Skype даже запущенный в фоне постоянно потребляет около 5% CPU. Это происходит из-за того, что он "будит" процессор 250-300 раз в секунду, ничего при этом не делая, оставляя процессору меньше времени на нахождение в энергосберегающем состоянии. Как следствие абсолютно бестолковый жор батареи вашего лаптопа. Собственно для исправления этого безобразия существует Skype-poll-fix, которым я и хочу поделиться, вот ссыль на страницу GitHub. Фикс кстати может быть использован и для MacOS, он увеличивает таймаут у вызовов Poll (Linux) и Kevent (MacOS), снижая потребление процессора в 4-5 раз.

Установка:

cd skype-poll-fix-master
make

Делаем прелоад (можно просто добавить в свойства ярлыка, указав путь к фиксу):
LD_PRELOAD=/path/to/skype-poll-fix.so skype

Для MacOS:
DYLD_INSERT_LIBRARIES=/path/to/skype-poll-fix.dylib skype

Все работает без дополнительных шаманств, но любители экспериментировать могут управлять таймаутами через переменные окружения MIN_POLL и SET_POLL. Таймаут установится в значение SET_POLL, если таймаут, который установил Skype, меньше MIN_POLL. По умолчанию, оба значения равняются 300 мс.
PS. Проверено: таймауты установленные в фиксе по умолчанию не влияют на качество и стабильность передачи видео и голоса.

У тех, у кого не собирается проверьте всё ли у вас установлено для сборки пакетов, например, build-essential, gcc, g++, make и т.д.

Если у вас возникают проблемы со сборкой на x64, то установите пакет gcc-multilib, выполнив:

sudo aptitude install gcc-multilib

stepes

#1
использую wheezy 64 бит, решил облегчить Skype по вашему мануалу, но получаю 2 ошибки:
1) из папки установки скрипта набрал в терминале make:
$ ~/downloads/skype-poll-fix-master$ make    и получил
Building 32-bit linux shared-library skype-poll-fix.so...
cc -shared -m32 -O2 -ldl -o skype-poll-fix.so skype-poll-fix.c
In file included from /usr/include/stdio.h:28:0,
                 from skype-poll-fix.c:3:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: Нет такого файла или каталога
compilation terminated.
make: *** [all] Ошибка 1
2) При запуске команды ~/downloads/skype-poll-fix-master$ LD_PRELOAD=~/downloads/skype-poll-fix-master/skype-poll-fix.so skype
ERROR: ld.so: object '/home/step/downloads/skype-poll-fix-master/skype-poll-fix.so' from LD_PRELOAD cannot be preloaded: ignored.
хотя скайп при этом открывается, т.к. в конце строки прописана команда его запуска.
Так и должно быть? как проверить что скрипт работает? ЧЯДНТ?
На 32 бит получилось и завелось, а вот на 64 бит - никак :-\
Все большие проблемы начинаются с маленькой лени

CoolAller

#2
stepes, скрипт тестировался на Debian x32 и без проблем собирается на нем и работает. Скайп запускается без каких-либо ошибок. Проверить работоспособность можно просто, запустив какой-нибудь htop и посмотреть на загрузку процессора программой Skype. Результат должен быть виден сразу, загрузка в IDLE упадет практически до нуля. Если у вас возникают проблемы со сборкой на x64, то установите пакет gcc-multilib, выполнив:
sudo aptitude install gcc-multilib

Так же проверьте все ли у вас установлено для сборки пакетов, например, build-essential, gcc, g++, make и т.д.

sx88

#3
skype-poll-fix-master$ make
Building 32-bit linux shared-library skype-poll-fix.so...
cc -shared -m32 -O2 -ldl -o skype-poll-fix.so skype-poll-fix.c
make: cc: Команда не найдена
Makefile:5: ошибка выполнения рецепта для цели «all»
make: *** [all] Ошибка 127



Linux sx 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) i686 GNU/Linux

Используйте теги для оформления сообщения, ihammers.

CoolAller

#4
sx88, см комент выше,  проверяйте пакеты для компиляции, скорее всего отсутствует gcc, ставьте build-essential, он установит нужные пакеты:
sudo aptitude install -r build-essential
Только что собрал, все работает:
Открыть содержимое (спойлер)
Цитироватьmake
Building 32-bit linux shared-library skype-poll-fix.so...
cc -shared -m32 -O2 -ldl -o skype-poll-fix.so skype-poll-fix.c

Linux host 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) i686 GNU/Linux

[свернуть]