Авторские статьи

Trace-exec спешит на помощь snap.


Медленные программы никого не радуют. А программа, ограниченная профилем системы мандатного доступа AppArmor, не получит точно ускорения, но и не должна безбожно тормозить. Безопасность и удобство всегда будут находиться в разных углах ринга, но можно и нужно искать компромисс и золотую середину. Разработчики с версии snapd 2.36 предложили снапкрафтерам опцию --trace-exec для удобства диагностирования потенциальных проблем.

Рассмотрим первый старт программы в snap пакете на примере VLC, который традиционно долгий так как многое ещё не подготовленно при начальном старте. Хотя разработчики уже проводили работы по улучшению при первом старте программы.

snap run --trace-exec vlc

VLC media player 3.0.7 Vetinari (revision 3.0.7-0-g86cee31)
[00000000016c3400] main libvlc: Запуск vlc с интерфейсом по умолчанию. Используйте 'cvlc' для запуска vlc без интерфейса.
...
Slowest 10 exec calls during snap run:
  0.094s /usr/lib/snapd/snap-confine
  0.019s /usr/bin/head
  0.041s /bin/cp
  29.676s /snap/vlc/1049/usr/bin/update-mime-database.real
  0.137s /snap/vlc/1049/usr/lib/x86_64-linux-gnu/glib-2.0/gio-querymodules
  0.019s /snap/vlc/1049/usr/lib/x86_64-linux-gnu/glib-2.0/glib-compile-schemas
  0.072s /snap/vlc/1049/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders
  30.709s /snap/vlc/1049/bin/desktop-launch
  1.257s /snap/vlc/1049/usr/bin/glxinfo
  1.268s /snap/vlc/1049/bin/vlc-snap-wrapper.sh
Total time: 40.113s

Снапкрафтер пакета может почерпнуть для себя в топ 10 медленных вызовов - кто является виновником в общем процессе старта программы. В нашем примере это безусловно создатель-MIME-базы. Эту задачу решают разработчики snap, так как это архитектурная особенность работы программы в изоляции и особенно её первого старта. Но в последующих стартах программы уже всё подготовленно и снапкрафтер может найти нового "виновника" или посчитать результат удовлетворительным.

Второй и последующие запуски не простой программы в 2 секунды, более чем достойно.
snap run --trace-exec vlc

VLC media player 3.0.7 Vetinari (revision 3.0.7-0-g86cee31)
...
Slowest 10 exec calls during snap run:
  0.006s snap-update-ns
  0.072s /usr/lib/snapd/snap-confine
  0.006s /usr/bin/getent
  0.006s /bin/mkdir
  0.005s /bin/mkdir
  0.005s /bin/mkdir
  0.007s /bin/mkdir
  0.180s /snap/vlc/1049/bin/desktop-launch
  0.128s /snap/vlc/1049/usr/bin/glxinfo
  0.138s /snap/vlc/1049/bin/vlc-snap-wrapper.sh
Total time: 2.682s

Можно получить список системных вызовов для дальнейшего анализа.

snap run --strace="-c" vlc

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 53,24    0,715643         600      1192         1 poll
 34,76    0,467220         390      1197        38 futex
  3,90    0,052488         367       143        57 wait4
  2,12    0,028512           3      8615      2594 stat
  1,66    0,022286       22286         1           rt_sigtimedwait
  1,10    0,014844           2      5955      4739 open
  0,34    0,004549           1      3320           mprotect
  0,32    0,004306           2      1726        81 read
...
  0,00    0,000000           0         1           faccessat
  0,00    0,000000           0         1           execveat
------ ----------- ----------- --------- --------- ----------------
100.00    1,344287                 35486      8198 total

Strace не панацея, но прекрасный инструмент для диагностики потенциальных проблем и в дополнение к другим инструментам отлично помогает снапкрафтерам. Если вы делаете первые шаги в упаковке своей или чужой программы, то настоятельно рекомендую обратиться к статье Snap up your development – Tools for making the snap trek easier.

Мои подопечные в snap формате.

Дата последней правки: 2019-08-09 10:16:16

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта