Пользователь
46,8
рейтинг
31 октября 2014 в 01:58

Разработка → Уменьшаем потребление CPU Skype под Linux и Mac OS

image Skype. Как мы его любим и одновременно ненавидим. Долгое время, Skype был единственной программой, которую я старался закрывать при работе лаптопа от батареи: потреблял около 4% CPU, будил процессор 250-300 раз в секунду, ничего при этом не делая, оставляя процессору меньше времени на нахождение в более энергосберегающем состоянии.

Увидел я однажды комментарий пользователя Vayun:
Возможно проблема проявляется не у всех, проверить легко: запускаем скайп, запускаем top (на ноутбуке работающем от батареи наглядней будет powertop) и смотрим сколько он отъедает cpu.

Я долго не возился, придавил только poll, увеличив timeout. Это даёт наибольший выигрыш (уменьшая %CPU скайпа раз в 5), но наверное можно лучше.

Собственно, вот: Skype-poll-fix. Увеличивает таймаут у вызовов poll (Linux) и kevent (Mac OS), снижая потребление процессора в 4-5 раз.

Как установить


Для Linux:
git clone https://github.com/ValdikSS/skype-poll-fix.git
cd skype-poll-fix
make
LD_PRELOAD=./skype-poll-fix.so skype

Для Mac OS:
git clone https://github.com/ValdikSS/skype-poll-fix.git
cd skype-poll-fix
make
DYLD_INSERT_LIBRARIES=./skype-poll-fix.dylib /Applications/Skype.app/Contents/MacOS/Skype

Можно управлять таймаутами через переменные окружения MIN_POLL и SET_POLL. Таймаут установится в значение SET_POLL, если таймаут, который установил Skype, меньше MIN_POLL. По умолчанию, оба значения равняются 300 мс.
@ValdikSS
карма
631,0
рейтинг 46,8
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (67)

  • 0
    Сделать бы еще удобный враппер оборачивающий скайп в контейнер типа docker чтобы не давать ему лазить по системе.
    • +2
      Можно от бесправного юзера запускать, как вариант.
      • 0
        В маке есть application firewall но я не осилил.
      • 0
        Интереснейшая штука! Спасибо за ссылки.
    • +1
      Дык, собственно, поставьте докер (или lxc, или просто чрут+смена-юзера-на-не-рут) и поставьте в него скайп. Может, эта статья как-то вам поможет: habrahabr.ru/post/240509
      • 0
        А в маке? Да и судя по статье это уже ооочень непросто.
        • +6
          А зачем вам захотелось спрятать скайп в контейнер? Потому что вы недоверяете проприетарному софту, который может за вами следить? А раз так, то зачем тогда вы юзаете мак?
          • +5
            Зачем впадать в паранойю?

            Как вариант, для изоляции некоторого ПО (в данном случае это Skype) от основной системы.
            Лично мне спокойнее, когда любое ПО (не обязательно проприетарное, от злющих корпораций, следящих за мной) не может повлиять на стабильность моей системы, не сможет внести туда изменения ЛЮБЫЕ.
            Да, с открытым ПО это проще контролировать, но почему бы просто не ГАРАНТИРОВАННО изолировать его?
            • +4
              Открытое ПО проще контролировать — если там есть какая-то дыра в безопасности или существенная ошибка нарушающая стабильность системы, то и самому можно код посмотреть и общественность все это быстро найдет. Вот возьмем например openSSL — библиотека с открытым кодом, все просто и безопасно.
              • 0
                Да я согласен с вами на 100%.

                Я просто хотел сказать, что всегда приятно/удобно/спокойно, когда вы можете взять и удалить приложение из системы и ГАРАНТИРОВАННО не затронуть никаких компонентов, не оставить следов использования и т.д.

                Хороший пример (возведенный в абсолют) — использование виртуальных машин. Я могу держать свою систему (хост) в чистоте, полностью изолировав ее от влияния.
                • +2
                  Вот возьмем например openSSL — библиотека с открытым кодом, все просто и безопасно.

                  Да я согласен с вами на 100%.

                  Вы же понимаете, что это был сарказм, да?
                  • 0
                    Тем не менее, благодаря открытости, уязвимость была разрекламирована и закрыта в считанные дни, а вот например, некотороые закрытые прогаммы (IIS) изобиловали дырами годами, причём на рабочих системах.
                    • 0
                      Так и Heartbleed только через 3 года нашли опубликовали. Время существования не равно времени выпука заплатки.
    • +1
      Пишут что можно через докер wiki.archlinux.org/index.php/Skype#Docker не проверял пока что
    • 0
      Серия статей про lxc
      www.stgraber.org/2013/12/20/lxc-1-0-blog-post-series/
      Конкретно
      www.stgraber.org/2014/02/09/lxc-1-0-gui-in-containers/
      Все работает, проверено электрониками.
      Ну или ссылки на статьи про докер которые тут уже были.
    • 0
      Для этого можно использовать filrejail l3net.wordpress.com/projects/firejail/ — достаточно удобная штука. Запуск skype в «песочнице»:
      firejail skype
      
  • +3
    Это блин как же топорно оно написано если удлиннением poll интервалов лечится? Или только в idle оно так? А не логировали для интереса чего там Skype изначально в таймаут ставит.
    Или может в чем другом дело? Давненько уже было, но у знакомца на ноутбуке долгое время все что общалось с сетью грузило процессор даже в idle, а работая отжирало вообще по самое не хочу. Причем другая (вроде предыдущая) ревизия того же ноута вела себя совсем по другому. Для чистоты эксперемента грузили оба с одного live-cd. Та же картина маслом.
    Так вот, вылечилось тогда само после обновления то ли дров для вайфая, то ли kernel когда обновился. И в changelog что-то про то было, за давностью уже и не упомнить.
    [зануда on]
    Глянул мельком код, у вас в случае APPLE при (timeout->tv_nsec >= MIN_POLL * 1000000) функция что вернет? И потом atoi без проверки на корректность — ну не камильфо как-то (очепятка в env иле чего еще и atoi вернет 0 — при таком таймауте cpu будет отъедать еще круче...)
    [зануда off]
    • +3
      Или только в idle оно так?
      Быть может, понижает потребление CPU и в разговоре, я не проверял, но в IDLE точно падает.

      А не логировали для интереса чего там Skype изначально в таймаут ставит.
      От 0 (нет таймаута) до просто маленьких величин, вроде 10-30. Видимо, что-то с архитектурой намудрили.

      функция что вернет?
      А ничего и не вернет. Спасибо за зоркий глаз, починено.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Код запросто может быть разным для разных ОС (#ifdef'ы всякие, например)
  • 0
    На OS X 10.10 падает.
    Если интересно. Осторожно, много текста.
    Process:               Skype [3628]
    Path:                  /Applications/Skype.app/Contents/MacOS/Skype
    Identifier:            Skype
    Version:               7.1 (7.1.0.665)
    Code Type:             X86-64 (Native)
    Parent Process:        zsh [1294]
    Responsible:           Terminal [374]
    User ID:               501
    
    Date/Time:             2014-10-30 23:07:37.605 -0400
    OS Version:            Mac OS X 10.10 (14A389)
    Report Version:        11
    Anonymous UUID:        1C5CB34E-B9C1-C016-1270-22079286C134
    
    
    Time Awake Since Boot: 6700 seconds
    
    Crashed Thread:        0  Dispatch queue: com.apple.main-thread
    
    Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
    Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000066
    
    VM Regions Near 0x66:
    --> 
        __TEXT                 0000000100000000-000000010193a000 [ 25.2M] rwx/rwx SM=COW  /Applications/Skype.app/Contents/MacOS/Skype
    
    Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
    0   com.skype.skype               	0x000000010059fba0 0x100000000 + 5897120
    1   com.skype.skype               	0x0000000100583554 0x100000000 + 5780820
    2   com.skype.skype               	0x000000010058331b 0x100000000 + 5780251
    
    Thread 0 crashed with X86 Thread State (64-bit):
      rax: 0x0000000000000066  rbx: 0x0000000100000a98  rcx: 0x0000000000000002  rdx: 0x00007fff739f9118
      rdi: 0x0000000000000000  rsi: 0x0000080000000800  rbp: 0x00007fff5fbff280  rsp: 0x00007fff5fbfefa0
       r8: 0x00007fff5fbfeec0   r9: 0x00007fff7250b300  r10: 0x0000000000000090  r11: 0x0000000101e00000
      r12: 0x000000000000000e  r13: 0x0000000100000000  r14: 0x0000000100000020  r15: 0x0000000000000002
      rip: 0x000000010059fba0  rfl: 0x0000000000010246  cr2: 0x0000000000000066
      
    Logical CPU:     3
    Error Code:      0x00000006
    Trap Number:     14
    
    
    Binary Images:
           0x100000000 -        0x100afefff +com.skype.skype (7.1 - 7.1.0.665) <3ECC09C3-C791-360D-9704-5513EF8BBFD9> /Applications/Skype.app/Contents/MacOS/Skype
           0x101bdd000 -        0x101bddfff +skype-poll-fix.dylib (0) <A1579595-1CFC-3F11-849D-AF34D97C6B8C> /Users/USER/*/skype-poll-fix.dylib
        0x7fff629d2000 -     0x7fff62a08837  dyld (353.2.1) <4696A982-1500-34EC-9777-1EF7A03E2659> /usr/lib/dyld
        0x7fff81c34000 -     0x7fff81ca3fff  com.apple.SearchKit (1.4.0 - 1.4.0) <BFD6D876-36BA-3A3B-9F15-3E2F7DE6E89D> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
        0x7fff81ca4000 -     0x7fff81cfeff7  com.apple.LanguageModeling (1.0 - 1) <ACA93FE0-A0E3-333E-AE3C-8EB7DE5F362F> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
        0x7fff81cff000 -     0x7fff81cfffff  libOpenScriptingUtil.dylib (162) <EFD79173-A9DA-3AE6-BE15-3948938204A6> /usr/lib/libOpenScriptingUtil.dylib
        0x7fff81f67000 -     0x7fff81f80ff7  com.apple.CFOpenDirectory (10.10 - 187) <0ECA5D80-A045-3A2C-A60C-E1605F3AB6BD> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
        0x7fff82014000 -     0x7fff82015fff  libDiagnosticMessagesClient.dylib (100) <2EE8E436-5CDC-34C5-9959-5BA218D507FB> /usr/lib/libDiagnosticMessagesClient.dylib
        0x7fff82123000 -     0x7fff8214efff  libc++abi.dylib (125) <88A22A0F-87C6-3002-BFBA-AC0F2808B8B9> /usr/lib/libc++abi.dylib
        0x7fff82158000 -     0x7fff822c3ff7  com.apple.audio.toolbox.AudioToolbox (1.12 - 1.12) <5C6DBEB4-F2EA-3262-B9FC-AFB89404C1DA> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
        0x7fff822c4000 -     0x7fff822caff7  libsystem_networkextension.dylib (167.1.10) <29AB225B-D7FB-30ED-9600-65D44B9A9442> /usr/lib/system/libsystem_networkextension.dylib
        0x7fff82300000 -     0x7fff8270dff7  libLAPACK.dylib (1128) <F9201AE7-B031-36DB-BCF8-971E994EF7C1> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
        0x7fff8290f000 -     0x7fff82a55fef  libsqlite3.dylib (168) <8B78BED1-7B9B-3943-80DC-0871015AEAC4> /usr/lib/libsqlite3.dylib
        0x7fff82a56000 -     0x7fff82a5cfff  libsystem_trace.dylib (72.1.3) <A9E6B7D8-C327-3742-AC54-86C94218B1DF> /usr/lib/system/libsystem_trace.dylib
        0x7fff82de1000 -     0x7fff82e55ff3  com.apple.securityfoundation (6.0 - 55126) <E7FB7A4E-CB0B-37BA-ADD5-373B2A20A783> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
        0x7fff82e56000 -     0x7fff82e5aff7  com.apple.TCC (1.0 - 1) <AFC32F8F-BCD5-313C-B66E-5AB8591EC066> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
        0x7fff8313c000 -     0x7fff83174ffb  libsystem_network.dylib (411) <C0B2313D-47BE-38A9-BEE6-2634A4F5E14B> /usr/lib/system/libsystem_network.dylib
        0x7fff83418000 -     0x7fff83432ff7  libextension.dylib (55) <17514AB2-C503-3D49-A725-EBC1140567A6> /usr/lib/libextension.dylib
        0x7fff834f8000 -     0x7fff83564fff  com.apple.framework.CoreWLAN (5.0 - 500.35.2) <ACBAAB0A-BCC7-37CF-AAFB-2DA1733F2682> /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
        0x7fff83ac0000 -     0x7fff83ae8fff  libsystem_info.dylib (459) <B85A85D5-8530-3A93-B0C3-4DEC41F79478> /usr/lib/system/libsystem_info.dylib
        0x7fff83d1c000 -     0x7fff83d1dff7  libsystem_blocks.dylib (65) <9615D10A-FCA7-3BE4-AA1A-1B195DACE1A1> /usr/lib/system/libsystem_blocks.dylib
        0x7fff83d1e000 -     0x7fff83daafff  libsystem_c.dylib (1044.1.2) <C185E862-7424-3210-B528-6B822577A4B8> /usr/lib/system/libsystem_c.dylib
        0x7fff83daf000 -     0x7fff83e27ff7  com.apple.SystemConfiguration (1.14 - 1.14) <C269BCFD-ACAB-3331-BC7C-0430F0E84817> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
        0x7fff84119000 -     0x7fff84126ff7  libbz2.1.0.dylib (36) <2DF83FBC-5C08-39E1-94F5-C28653791B5F> /usr/lib/libbz2.1.0.dylib
        0x7fff842b8000 -     0x7fff842c3ff7  libkxld.dylib (2782.1.97) <CB1A1B57-54BE-3573-AE0C-B90ED6BAEEE2> /usr/lib/system/libkxld.dylib
        0x7fff842c4000 -     0x7fff842ceff7  com.apple.NetAuth (5.0 - 5.0) <B9EC5425-D38D-308C-865F-207E0A98BAC7> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
        0x7fff843e2000 -     0x7fff843e5fff  com.apple.xpc.ServiceManagement (1.0 - 1) <7E9E6BB7-AEE7-3F59-BAC0-59EAF105D0C8> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
        0x7fff8446f000 -     0x7fff84477fff  libsystem_platform.dylib (63) <64E34079-D712-3D66-9CE2-418624A5C040> /usr/lib/system/libsystem_platform.dylib
        0x7fff84478000 -     0x7fff84480fff  libsystem_dnssd.dylib (561.1.1) <62B70ECA-E40D-3C63-896E-7F00EC386DDB> /usr/lib/system/libsystem_dnssd.dylib
        0x7fff844ac000 -     0x7fff844f2ff7  libauto.dylib (186) <A260789B-D4D8-316A-9490-254767B8A5F1> /usr/lib/libauto.dylib
        0x7fff84626000 -     0x7fff8463cff7  libsystem_asl.dylib (267) <F153AC5B-0542-356E-88C8-20A62CA704E2> /usr/lib/system/libsystem_asl.dylib
        0x7fff8463d000 -     0x7fff84641fff  libsystem_stats.dylib (163.1.4) <1DB04436-5974-3F16-86CC-5FF5F390339C> /usr/lib/system/libsystem_stats.dylib
        0x7fff84f09000 -     0x7fff84f09fff  com.apple.audio.units.AudioUnit (1.12 - 1.12) <76EF1C9D-DEA4-3E55-A134-4099B2FD2CF2> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
        0x7fff84fa0000 -     0x7fff84fa9fff  libsystem_pthread.dylib (105.1.4) <26B1897F-0CD3-30F3-B55A-37CB45062D73> /usr/lib/system/libsystem_pthread.dylib
        0x7fff84fb3000 -     0x7fff84fcdff7  liblzma.5.dylib (7) <1D03E875-A7C0-3028-814C-3C27F7B7C079> /usr/lib/liblzma.5.dylib
        0x7fff85107000 -     0x7fff8511eff7  libLinearAlgebra.dylib (1128) <E78CCBAA-A999-3B65-8EC9-06DB15E67C37> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
        0x7fff8511f000 -     0x7fff85387ffb  com.apple.security (7.0 - 57031.1.35) <96141D1F-614E-32C4-8AC2-F47481F23F43> /System/Library/Frameworks/Security.framework/Versions/A/Security
        0x7fff853e8000 -     0x7fff8577efff  com.apple.CoreFoundation (6.9 - 1151.16) <F2B088AF-A5C6-3FAE-9EB4-7931AF6359E4> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
        0x7fff8577f000 -     0x7fff85790fff  libcmph.dylib (1) <46EC3997-DB5E-38AE-BBBB-A035A54AD3C0> /usr/lib/libcmph.dylib
        0x7fff8586e000 -     0x7fff8588bfff  libsystem_kernel.dylib (2782.1.97) <93E0E0A9-75B6-3904-BB4E-4BC7C05F4B6B> /usr/lib/system/libsystem_kernel.dylib
        0x7fff85893000 -     0x7fff859b4fff  com.apple.LaunchServices (644.10 - 644.10) <0B1C68BC-0AEB-38E2-ABC8-E92728FEC475> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
        0x7fff85ce5000 -     0x7fff85ce7ff7  libsystem_coreservices.dylib (9) <41B7C578-5A53-31C8-A96F-C73E030B0938> /usr/lib/system/libsystem_coreservices.dylib
        0x7fff85ec0000 -     0x7fff861dbfcf  com.apple.vImage (8.0 - 8.0) <1183FE6A-FDB6-3B3B-928D-50C7909F2308> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
        0x7fff86642000 -     0x7fff8666afff  libxpc.dylib (559.1.22) <9437C02E-A07B-38C8-91CB-299FAA63083D> /usr/lib/system/libxpc.dylib
        0x7fff86770000 -     0x7fff86777ff7  libcompiler_rt.dylib (35) <BF8FC133-EE10-3DA6-9B90-92039E28678F> /usr/lib/system/libcompiler_rt.dylib
        0x7fff87227000 -     0x7fff87234ff7  libxar.1.dylib (254) <CE10EFED-3066-3749-838A-6A15AC0DBCB6> /usr/lib/libxar.1.dylib
        0x7fff8771a000 -     0x7fff87735ff7  libCRFSuite.dylib (34) <D64842BE-7BD4-3D0C-9842-1D202F7C2A51> /usr/lib/libCRFSuite.dylib
        0x7fff877dd000 -     0x7fff8796bfff  libBLAS.dylib (1128) <497912C1-A98E-3281-BED7-E9C751552F61> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
        0x7fff87a9a000 -     0x7fff87aabff7  libsystem_coretls.dylib (35.1.2) <EBBF7EF6-80D8-3F8F-825C-B412BD6D22C0> /usr/lib/system/libsystem_coretls.dylib
        0x7fff87aac000 -     0x7fff87b13ff7  com.apple.framework.CoreWiFi (3.0 - 300.4) <19269C1D-EB29-384A-83F3-7DDDEB7D9DAD> /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi
        0x7fff88656000 -     0x7fff88748ff7  libiconv.2.dylib (42) <2A06D02F-8B76-3864-8D96-64EF5B40BC6C> /usr/lib/libiconv.2.dylib
        0x7fff88a50000 -     0x7fff88a57fff  com.apple.NetFS (6.0 - 4.0) <1581D25F-CC07-39B0-90E8-5D4F3CF84EBA> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
        0x7fff88c90000 -     0x7fff88c94fff  libcache.dylib (69) <45E9A2E7-99C4-36B2-BEE3-0C4E11614AD1> /usr/lib/system/libcache.dylib
        0x7fff88d37000 -     0x7fff88d96ff3  com.apple.AE (681 - 681) <7F544183-A515-31A8-B45F-89A167F56216> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
        0x7fff892ab000 -     0x7fff892b3ffb  libcopyfile.dylib (118.1.2) <0C68D3A6-ACDD-3EF3-991A-CC82C32AB836> /usr/lib/system/libcopyfile.dylib
        0x7fff89bfa000 -     0x7fff89c70fe7  libcorecrypto.dylib (233.1.2) <E1789801-3985-3949-B736-6B3378873301> /usr/lib/system/libcorecrypto.dylib
        0x7fff89cbb000 -     0x7fff89cd7ff7  libsystem_malloc.dylib (53.1.1) <19BCC257-5717-3502-A71F-95D65AFA861B> /usr/lib/system/libsystem_malloc.dylib
        0x7fff89d33000 -     0x7fff89de2fe7  libvMisc.dylib (512) <AFBA45DE-7F55-3E4E-B8DF-5E8E21C407AD> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
        0x7fff89de3000 -     0x7fff89de4fff  libSystem.B.dylib (1213) <DA954461-EC6A-3DF0-8551-6FC810627627> /usr/lib/libSystem.B.dylib
        0x7fff89df0000 -     0x7fff89df1ffb  libremovefile.dylib (35) <3485B5F4-6CE8-3C62-8DFD-8736ED6E8531> /usr/lib/system/libremovefile.dylib
        0x7fff8a328000 -     0x7fff8a330ffb  com.apple.CoreServices.FSEvents (1210 - 1210) <782A9C69-7A45-31A7-8960-D08A36CBD0A7> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
        0x7fff8a331000 -     0x7fff8a423fff  libxml2.2.dylib (26) <B834E7C8-EC3E-3382-BC5A-DA38DC4D720C> /usr/lib/libxml2.2.dylib
        0x7fff8a4ba000 -     0x7fff8a4bafff  com.apple.Accelerate (1.10 - Accelerate 1.10) <C7278843-2462-32F6-B0E3-D33C681399A2> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
        0x7fff8a4bb000 -     0x7fff8a4ebfff  libsystem_m.dylib (3086.1) <1E12AB45-6D96-36D0-A226-F24D9FB0D9D6> /usr/lib/system/libsystem_m.dylib
        0x7fff8a799000 -     0x7fff8a7eaff7  com.apple.audio.CoreAudio (4.3.0 - 4.3.0) <AF72B06E-C6C1-3FAE-8B47-AF461CAE0E22> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
        0x7fff8a7eb000 -     0x7fff8a816ff3  libarchive.2.dylib (30) <8CBB4416-EBE9-3574-8ADC-44655D245F39> /usr/lib/libarchive.2.dylib
        0x7fff8a817000 -     0x7fff8a819fff  com.apple.loginsupport (1.0 - 1) <35A2A071-606C-39A5-8C11-E4CAF98D934C> /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
        0x7fff8aab1000 -     0x7fff8addfff7  com.apple.Foundation (6.9 - 1151.16) <18EDD673-A010-3E99-956E-DA594CE1FA80> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
        0x7fff8ae40000 -     0x7fff8aebdfff  com.apple.CoreServices.OSServices (640.3 - 640.3) <28445162-08E9-3E24-84E4-617CE5FE1367> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
        0x7fff8af9c000 -     0x7fff8af9efff  libsystem_configuration.dylib (699.1.5) <9FBA1CE4-97D0-347E-A443-93ED94512E92> /usr/lib/system/libsystem_configuration.dylib
        0x7fff8afb8000 -     0x7fff8afe2ff7  libdispatch.dylib (442.1.4) <502CF32B-669B-3709-8862-08188225E4F0> /usr/lib/system/libdispatch.dylib
        0x7fff8afe3000 -     0x7fff8b00cffb  libxslt.1.dylib (13) <AED1143F-B848-3E73-81ED-71356F25F084> /usr/lib/libxslt.1.dylib
        0x7fff8b660000 -     0x7fff8b8dafff  com.apple.CoreData (110 - 526) <AEEDAF00-D38F-3A15-B3C9-73732940CC55> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
        0x7fff8b9be000 -     0x7fff8b9beff7  liblaunch.dylib (559.1.22) <8A988924-8BE7-35FE-BF7D-322E90EFE49E> /usr/lib/system/liblaunch.dylib
        0x7fff8b9bf000 -     0x7fff8b9bffff  com.apple.Accelerate.vecLib (3.10 - vecLib 3.10) <01E92F9F-EF29-3745-8631-AEA692F7F29C> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
        0x7fff8b9c0000 -     0x7fff8b9c1fff  libsystem_secinit.dylib (18) <581DAD0F-6B63-3A48-B63B-917AF799ABAA> /usr/lib/system/libsystem_secinit.dylib
        0x7fff8b9f5000 -     0x7fff8ba49fff  libc++.1.dylib (120) <1B9530FD-989B-3174-BB1C-BDC159501710> /usr/lib/libc++.1.dylib
        0x7fff8c1d1000 -     0x7fff8c1d6ff7  libmacho.dylib (862) <126CA2ED-DE91-308F-8881-B9DAEC3C63B6> /usr/lib/system/libmacho.dylib
        0x7fff8c1d7000 -     0x7fff8c1d8fff  liblangid.dylib (117) <B54A4AA0-2E53-3671-90F5-AFF711C0EB9E> /usr/lib/liblangid.dylib
        0x7fff8c1f6000 -     0x7fff8c207ff7  libz.1.dylib (55) <88C7C7DE-04B8-316F-8B74-ACD9F3DE1AA1> /usr/lib/libz.1.dylib
        0x7fff8c208000 -     0x7fff8c20aff7  libquarantine.dylib (76) <DC041627-2D92-361C-BABF-A869A5C72293> /usr/lib/system/libquarantine.dylib
        0x7fff8c5d6000 -     0x7fff8c6e8ff7  libvDSP.dylib (512) <DD5517F5-F7F7-3AA1-B6FA-CD98DBC3C651> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
        0x7fff8c6e9000 -     0x7fff8ca1cfff  libmecabra.dylib (666) <2CE5540A-D412-3D53-9E11-86C24D61713B> /usr/lib/libmecabra.dylib
        0x7fff8de78000 -     0x7fff8de7bff7  libdyld.dylib (353.2.1) <19FAF435-C165-3374-9DEF-D7BBA7D61DB6> /usr/lib/system/libdyld.dylib
        0x7fff8df34000 -     0x7fff8df44ff7  libbsm.0.dylib (34) <A3A2E56C-2B65-37C7-B43A-A1F926E1A0BB> /usr/lib/libbsm.0.dylib
        0x7fff8eb6b000 -     0x7fff8ec0dfff  com.apple.Bluetooth (4.3.0 - 4.3.0f10) <70922125-2A01-37AE-9CB8-D8A9578092E4> /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
        0x7fff8ec50000 -     0x7fff8ec55ff7  libunwind.dylib (35.3) <BE7E51A0-B6EA-3A54-9CCA-9D88F683A6D6> /usr/lib/system/libunwind.dylib
        0x7fff8ec86000 -     0x7fff8ec86ff7  libunc.dylib (29) <5676F7EA-C1DF-329F-B006-D2C3022B7D70> /usr/lib/system/libunc.dylib
        0x7fff8f1c6000 -     0x7fff8f1cafff  libpam.2.dylib (20) <E805398D-9A92-31F8-8005-8DC188BD8B6E> /usr/lib/libpam.2.dylib
        0x7fff8f2b6000 -     0x7fff8f2bfff7  libsystem_notify.dylib (133.1.1) <61147800-F320-3DAA-850C-BADF33855F29> /usr/lib/system/libsystem_notify.dylib
        0x7fff8f31f000 -     0x7fff8f606ffb  com.apple.CoreServices.CarbonCore (1108.1 - 1108.1) <55A16172-ACC0-38B7-8409-3CB92AF33973> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
        0x7fff900f2000 -     0x7fff900f2ff7  libkeymgr.dylib (28) <77845842-DE70-3CC5-BD01-C3D14227CED5> /usr/lib/system/libkeymgr.dylib
        0x7fff9024c000 -     0x7fff90257fff  libcommonCrypto.dylib (60061) <D381EBC6-69D8-31D3-8084-5A80A32CB748> /usr/lib/system/libcommonCrypto.dylib
        0x7fff903b0000 -     0x7fff90595ff3  libicucore.A.dylib (531.30) <EF0E7544-E317-3550-A962-6AE65E78AF17> /usr/lib/libicucore.A.dylib
        0x7fff906cb000 -     0x7fff906f6fff  com.apple.DictionaryServices (1.2 - 229) <6789EC43-CADA-394D-8FE8-FC3A2DD136B9> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
        0x7fff907d2000 -     0x7fff907d4ff7  libsystem_sandbox.dylib (358.1.1) <DB9962EF-8898-31CC-9B87-E01F8CE74C9D> /usr/lib/system/libsystem_sandbox.dylib
        0x7fff9085f000 -     0x7fff90872ff7  com.apple.CoreBluetooth (1.0 - 1) <FA9B43B3-E183-3040-AE25-66EF9870CF35> /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
        0x7fff90873000 -     0x7fff90a58267  libobjc.A.dylib (646) <3B60CD90-74A2-3A5D-9686-B0772159792A> /usr/lib/libobjc.A.dylib
        0x7fff90d36000 -     0x7fff90d36fff  com.apple.CoreServices (62 - 62) <9E4577CA-3FC3-300D-AB00-87ADBDDA2E37> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
        0x7fff90dd2000 -     0x7fff90ddeff7  com.apple.OpenDirectory (10.10 - 187) <1D0066FC-1DEB-381B-B15C-4C009E0DF850> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
        0x7fff90e17000 -     0x7fff9101aff3  com.apple.CFNetwork (720.0.9 - 720.0.9) <78EE1B88-394F-3BB8-93A6-E068990559EC> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
        0x7fff9107d000 -     0x7fff91082fff  com.apple.DiskArbitration (2.6 - 2.6) <0DFF4D9B-2AC3-3B82-B5C5-30F4EFBD2DB9> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
        0x7fff910eb000 -     0x7fff91189fff  com.apple.Metadata (10.7.0 - 916) <DA8A1D18-19FE-37B3-BE12-85C5B0A00736> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
        0x7fff9127b000 -     0x7fff912ecff7  com.apple.framework.IOKit (2.0.2 - 1050.1.21) <ED3B0B22-AACC-303B-BFC8-20ECD1AF6BA2> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
        0x7fff91465000 -     0x7fff914ccff7  com.apple.datadetectorscore (6.0 - 396.1) <5D348063-1528-3E2F-B587-9E82970506F9> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
    
    External Modification Summary:
      Calls made by other processes targeting this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by all processes on this machine:
        task_for_pid: 390141
        thread_create: 0
        thread_set_state: 0
    
    VM Region Summary:
    ReadOnly portion of Libraries: Total=146.5M resident=156.9M(107%) swapped_out_or_unallocated=16777216.0T(12008958197760%)
    Writable regions: Total=22.0M written=2744K(12%) resident=2912K(13%) swapped_out=0K(0%) unallocated=19.2M(87%)
     
    REGION TYPE                      VIRTUAL
    ===========                      =======
    Kernel Alloc Once                     4K
    MALLOC                             11.2M
    MALLOC (admin)                       16K
    STACK GUARD                        56.0M
    Stack                              8192K
    VM_ALLOCATE                           8K
    __DATA                             7436K
    __LINKEDIT                         70.0M
    __TEXT                             76.4M
    __UNICODE                           544K
    __le__                              112K
    mapped file                          64K
    shared memory                         4K
    ===========                      =======
    TOTAL                             229.7M
    
    Model: MacBookAir6,2, BootROM MBA61.0099.B16, 2 processors, Intel Core i7, 1.7 GHz, 8 GB, SMC 2.13f15
    Graphics: Intel HD Graphics 5000, Intel HD Graphics 5000, Built-In
    Memory Module: BANK 0/DIMM0, 4 GB, DDR3, 1600 MHz, 0x80AD, 0x483943434E4E4E384A544D4C41522D4E544D
    Memory Module: BANK 1/DIMM0, 4 GB, DDR3, 1600 MHz, 0x80AD, 0x483943434E4E4E384A544D4C41522D4E544D
    AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x117), Broadcom BCM43xx 1.0 (7.15.124.12.8)
    Bluetooth: Version 4.3.0f10 14890, 3 services, 27 devices, 1 incoming serial ports
    Network Service: Thunderbolt Ethernet Slot 1, Ethernet, en2
    PCI Card: ethernet, Ethernet Controller, Thunderbolt@193,0,0
    PCI Card: pci1b73,1100, USB eXtensible Host Controller, Thunderbolt@194,0,0
    Serial ATA Device: APPLE SSD SD0128F, 121.33 GB
    USB Device: USB3.0 Hub
    USB Device: External USB 3.0
    USB Device: USB audio CODEC
    USB Device: Yubico Yubikey II
    USB Device: USB2.0 Hub
    USB Device: Backup+  Desk
    USB Device: Keyboard Hub
    USB Device: Apple Keyboard
    USB Device: Internal Memory Card Reader
    USB Device: BRCM20702 Hub
    USB Device: Bluetooth USB Host Controller
    Thunderbolt Bus: MacBook Air, Apple Inc., 23.6
    Thunderbolt Device: Thunderbolt Station, CalDigit, Inc., 1, 30.1
    

    • +1
      Сделайте git pull и попробуйте еще.
      • 0
        skype-poll-fix.c:61:15: error: assigning to 'struct timespec' from incompatible type 'const struct timespec *'
                        new_timeout = timeout;
                                    ^ ~~~~~~~
        1 error generated.
        make: *** [skype-poll-fix.o] Error 1
        
  • +1
    Во время простоя правка таймаутов может и позволит снизить нагрузку на цпу.
    А во время видео-вызовов, не повлияет ли на стабильность связи при передаче видеопотока? Не будет дёрганья и задержек? Как-никак работа приближена к реалтайму должна быть…
    • 0
      Видео не проверял, но с голосом никаких проблем.
  • +8
    Разрешите включить в состав skypetab?
    • +6
      Конечно! Чего спрашиваете-то.
  • 0
    Увеличивает таймаут у вызовов poll (Linux) и kevent (Mac OS), снижая потребление процессора в 4-5 раз.

    А что эти вызовы делают?
  • 0
    на арче x86_64

    [melihov@sup-pm7 skype-poll-fix]$ LD_PRELOAD=./skype-poll-fix.so skype
    ERROR: ld.so: object './skype-poll-fix.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
    
    [melihov@sup-pm7 skype-poll-fix]$ uname -a
    Linux sup-pm7.r-service.net 3.17.1-1-ARCH #1 SMP PREEMPT Wed Oct 15 15:04:35 CEST 2014 x86_64 GNU/Linux
    
    • +1
      Не обращайте внимания, это он в bash не может подгрузиться.
  • 0
    Извините за глупый вопрос, но каждый раз нужно запускать через
    LD_PRELOAD=./skype-poll-fix.so skype?
    • 0
      Да.
      Я добавил это в /usr/bin/skype (шелл-скрипт).
      • 0
        Интересно, что делать в маке? Хоть приложение-лаунчер пакуй, чтоб не лазить внутрь скайповского приложения.

        упд. дочитал до конца — что-то нет у меня уверенности, что Info.plist переживает обновления скайпа… ;-(
    • 0
      Для арча сделал так:
      Кладем ./skype-poll-fix.so в /usr/lib/
      Правим /usr/bin/skype
      $ cat /usr/bin/skype
      #!/bin/bash
      
      LIBDIR="/usr/lib32"
      
      if [[ -e "$LIBDIR/libv4l/v4l2convert.so" ]]; then
              export LD_PRELOAD="${LD_PRELOAD:+$LD_PRELOAD:}$LIBDIR/libv4l/v4l2convert.so"
      fi
      
      if [[ -e "/usr/share/skype/lib/libQtWebKit.so.4" ]]; then
              export LD_PRELOAD="${LD_PRELOAD:+$LD_PRELOAD:}/usr/share/skype/lib/libQtWebKit.so.4"
      fi
      
      export LD_PRELOAD="${LD_PRELOAD:+$LD_PRELOAD:}/usr/lib/skype-poll-fix.so"
      
      exec "$LIBDIR/skype/skype" "$@"
      
      • +3
        Не нужно что-то укладывать в /usr/lib, если вы не пакетный менеджер, засовывайте в /usr/local/lib подобные вещи, не гадьте в неположенных местах.
      • 0
        в lib32, по моему, лучше положить, а не в lib(64)
  • 0
    Mint 17 (64bit) (На Ubuntu 14.04 LTS):
    make -f Makefile.linux
    cc -shared -m32 -O2 -ldl -c -o skype-poll-fix.o skype-poll-fix.c
    In file included from /usr/include/stdio.h:27:0,
    from skype-poll-fix.c:2:
    /usr/include/features.h:374:25: fatal error: sys/cdefs.h: Нет такого файла или каталога
    # include <sys/cdefs.h>
    ^
    compilation terminated.
    make: *** [skype-poll-fix.o] Ошибка 1
    • 0
      У вас __APPLE__, похоже.
      • 0
        cat /etc/*-release:

        DISTRIB_ID=LinuxMint
        DISTRIB_RELEASE=17
        DISTRIB_CODENAME=qiana
        DISTRIB_DESCRIPTION=«Linux Mint 17 Qiana»
        NAME=«Ubuntu»
        VERSION=«14.04.1 LTS, Trusty Tahr»
        ID=ubuntu
        ID_LIKE=debian
        PRETTY_NAME=«Ubuntu 14.04.1 LTS»
        VERSION_ID=«14.04»
        HOME_URL=«www.ubuntu.com/»
        SUPPORT_URL=«help.ubuntu.com/»
        BUG_REPORT_URL=«bugs.launchpad.net/ubuntu/»
        cat: /etc/upstream-release: Это каталог


        cat /proc/version:
        Linux version 3.13.0-24-generic (buildd@batsu) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014


        Пакет build-essentials установлен.
        • 0
          del
    • +1
      У меня тоже на Linux Mint (правда 12.04 LTS) не собиралось:

      $ make -f Makefile.linux 
      cc -shared -m32 -O2 -ldl   -c -o skype-poll-fix.o skype-poll-fix.c
      In file included from /usr/include/stdio.h:28:0,
                       from skype-poll-fix.c:2:
      /usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory
      compilation terminated.
      make: *** [skype-poll-fix.o] Error 1
      


      Оказалось проблема решается просто — нужно установить пакет gcc-multilib:

      sudo aptitude install gcc-multilib
      
      • +1
        Спасибо, помогло. Mint 17.
      • 0
        спасибо
    • +1
      Поставьте
      apt-get install gcc-multilib
      • 0
        извините, не увидел комментарий выше
  • 0
    Может не совсем по теме, но актуально: как закрыть Skype (полностью выйти) под Windows? Вопрос про самую последнюю версию Skype. Единственный действенный метод, который я нашёл — через Task Manager. Спасибо.
    • +1
      ПКМ на значке на панеле задач (не помню как она называется в винде).
      Там есть пункт «Quit»
  • 0
    Ситема Arch, i7-4700HQ, постоянная зарузка проца скайпов около 2% и это когда он просто висит в фоне.
  • 0
    Под linux нехватает проверки на отрицательный timeout. В таком случае для poll это означает бесконечность. Сейчас 'ждать вечно' меняется на 'ждать 300мс'.
  • +3
    А сделайте пожалуйста пакет для homebrew.
    • 0
      Сделать несложно, только имеет ли смысл.
      Вам этот метод помог?
      У меня после ощения с автором запустилось, но эффекта никакого.
  • 0
    Возникает ошибка
    $ LD_PRELOAD=./skype-poll-fix.so skype
    ERROR: ld.so: object './skype-poll-fix.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored
    

  • 0
    Падает где-то после получаса работы:
    Gentoo x86_64

    LD_PRELOAD=./skype-poll-fix.so skype
    Corrupt JPEG data: 4 extraneous bytes before marker 0xc4
    ERROR: ld.so: object './skype-poll-fix.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
    ERROR: ld.so: object './skype-poll-fix.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
    ERROR: ld.so: object './skype-poll-fix.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
    
    (process:6058): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
    Аварийный останов
    
    
  • 0
    Ubuntu, 14.04

    $ 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
    skype-poll-fix.c: In function ‘poll’:
    skype-poll-fix.c:56:27: error: ‘RTLD_NEXT’ undeclared (first use in this function)
    pollmethod_orig = dlsym(RTLD_NEXT, STRINGIZE(POLL_FUNC_NAME));
    ^
    skype-poll-fix.c:56:27: note: each undeclared identifier is reported only once for each function it appears in
    make: *** [all] Error 1

    Пакет gcc-multilib стоит.
    Как это исправить?
  • 0
    На OS X стоит «make -f Makefile.macos» заменить на «make -f Makefile», иначе ошибка (:
  • 0
    И да, можно ли каким-либо образом на OS X сделать так, чтобы при нажатии на иконку Skype запускался он с нужными параметрами, а не каждый раз через терминал?
    • 0
      Там как-то можно через XML. Но, скорее всего, у вас тоже не заработает, что-то под Mac OS поломано, пока я не понял, что именно.
    • 0
      Вроде так в /Applications/Skype.app/Contents/Info.plist:

        <key>LSEnvironment</key>
        <dict>
            <key>DYLD_INSERT_LIBRARIES</key>
            <string>/path/to/dylib/skype-poll-fix.dylib</string>
        </dict>
      
      • 0
        с первого раза скайп не запустился.
        со второго раза получилось. хз как проверить, есть ли эффект
        • 0
          У меня с первого раза запустился, но вылетел через какое-то время.
          • 0
            тут yosemite + правильно обновлённые сдк/компиляторы и т.д. В этом же Info.plist написано явно, что эту версию скайпа собирали под 10.10 таким же компилятором (точнее, СДК, но суть та же)
  • 0
    Круто. Загрузка упала с 2,3 до 0,3 %.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.