производителност

Урок за OProfile

Урок за OProfile

OProfile е производител на профили за Linux. В тази статия ще разгледаме какво прави, как да го инсталираме и конфигурираме и как да използваме данните, които сглобява, да използват.

Може би се чудите защо ще ви е необходим инструмент като този, тъй като по подразбиране в повечето дистрибуции на Linux има много инструменти за анализ на ефективността. Всяка инсталация включва инструменти като top и vmstat, а помощните програми за проследяване като strace обикновено са просто подходящо избягване. Къде се вписва OProfile?

Споменатите по-горе инструменти са отлични за получаване на моментна снимка на Linux система в реално време. Инструменти като top или htop показват всички работещи процеси, текущото им потребление на памет и използването на процесора. Но знанието за това кои процеси и системни повиквания консумират най-много ресурси става проблематично.

Това е мястото, където влиза OProfile. Този полезен пакет не само извършва своя анализ на по-дълбоко ниво, но също така спестява данни и ви позволява да изготвяте отчети за ефективността, които предлагат богата информация, която може да ви помогне да отстраните грешките и при най-неуловимия проблем с производителността.

OProfile не е само за разработчици. В настолна среда OProfile може да ви помогне да проследите фонови задачи с интензивен процесор или I / O повиквания, които ви забавят и не се забелязват веднага. В натоварена система с променящи се приоритети на процеса тези данни могат да бъдат трудни за събиране, да не говорим за интерпретация. Многопроцесната природа на сървърната среда прави тази задача още по-трудна с традиционните инструменти.

Въпреки това разработчиците без съмнение ще се възползват максимално от OProfile. Информацията, която ще представя, ще обхване основите на двата случая на употреба, за да можете да разгледате показателите за производителност на всяка програма на Linux.

Инсталация

Има много важна бележка, която трябва да се направи, преди да се потопите дълбоко в OProfile - може да не успеете да го инсталирате във виртуализирана среда. Ако използвате Linux в VirtualBox, VMWare или подобна VM среда, OProfile може да не успее да получи достъп до необходимите броячи за производителност за събиране на данни. Освен това, дори ако сте в състояние да го използвате във виртуална среда, прецизното синхронизиране може да бъде до известна степен изкривено въз основа на натоварването на хост системата, така че, моля, имайте това предвид, ако не работите на собствен хардуер.

Няколко дистрибуции на Linux имат OProfile в своите системи за управление на пакети, което прави инсталацията лесна:

Един прост пример

След като програмата бъде инсталирана, нека намокрим краката си с тривиален, но полезен пример. Програмата „ls“ е команда, която вероятно използвате през цялото време. Той просто показва списък с файлове и папки в текущата директория. Нека да проследим изхода му:

sudo operf ls

Ще видите нещо подобно на горния екран. След като профилиращият приключи, той ще обяви „Профилирането е направено.”Той е запазил данните си в папка, наречена oprofile_data, която може да се използва за генериране на отчет.

Изпълнението на командата opreport (в този случай без sudo) създава отчет, подобен на този:

В този пример отчетът по подразбиране показва броя на пробите, когато процесорът не е бил в състояние HALT (с други думи, активно е правил нещо). Kallsyms осигурява търсене на символи, използвано от профилатора и ld.така и libc.така са част от пакета glibc, обща библиотека, свързана с почти всички изпълними файлове на Linux, която предоставя основна функционалност, която разработчиците могат да използват, за да не изобретят колелото и да осигурят общо ниво на съвместимост между различни системи. Можете да видите, че действителната програма ls имаха далеч по-малко време без HALT - по-голямата част от тежкото повдигане беше направено от стандартните библиотеки.

След като приключим с отчета, е добре или да премахнете папката с данни, или да я запазите за бъдещ анализ. В този пример просто ще го премахнем, тъй като изпълняваме примерни упражнения. Тъй като изпълнихме командата със sudo, трябва да премахнем папката със sudo. Бъди внимателен!

sudo rm -Rf oprofile_data

По-сложен пример

В този следващ пример ще стартираме програма, която всъщност прави нещо по-сложно, отколкото просто списък с файлове в текущата папка. Нека изтеглим WordPress с wget.

sudo operf wget http: // wordpress.org / най-късно.катран.gz

След този пример можем да генерираме отчет с командата “opreport”:

Ще видите много повече активност след тази. Командата wget трябваше да свърши много работа зад кулисите, за да получи най-новото копие на WordPress. Въпреки че не е необходимо да се разглежда всеки елемент, интересните точки на интерес са:

Този вид данни могат да предоставят богата информация за разработчик. Но как е важно това за системен администратор на сървър или потребител на настолен компютър? Като знаем кои части на програма отнемат най-много време на процесора, можем да разберем какво се нуждае от оптимизация или къде се случва забавянето, което ни позволява да вземаме по-добри решения за това как да оптимизираме нашата система.

В този пример най-много време на процесора отнеха крипто / SSL рутините. Това е разбираемо, защото криптографията е отнемаща време задача. Имах wordpress.уебсайтът на org не ни пренасочи към https: // тази библиотека нямаше да бъде използвана, спестявайки ни процесорно време. Мрежовият слой все още би бил използван, но използването на кабелна връзка вместо безжична връзка вероятно би било по-малко данъчно. Деактивирането на индикатора за напредък в програмата wget (чрез превключвателя -nv) би спестило време на процесора при показване на хода на изтегляне.

Копаене в символи

Въпреки че отчетът по подразбиране предоставя ценна и полезна информация, ние можем да копаем по-нататък. Като изпълните това:

opreport --demangle = smart --symbols

Можем да разберем колко точно е времето на процесора в консумираните библиотеки:

В този пример използвах командата wget по-горе, но използвах http: // URL (такъв, който не пренасочва към https: //) и можете да видите липсата на библиотеки на OpenSSL в трасирането. Вместо само името на библиотеката, сега имаме пълен списък на включените функции. Както можете да видите, мрежовият слой консумира по-голямата част от времето на процесора, което не е HALT.

Преминаване към следващото ниво

В предишните примери използвахме OProfile, за да разгледаме по една програма. Можете да разгледате цялата си система наведнъж, като използвате превключвателя за цялата система:

sudo operf - общосистемна

Използвайки тази техника, OProfile ще събира статистически данни по същия начин и ще спре, когато натиснете CTRL + C. След това можете да изпълните командата opreport. Тъй като профилаторът вероятно ще генерира много повече данни (особено на десктоп или зает сървър).

opreport & gt; доклад.текст

Отчетът вече е видим във файл, наречен отчет.текст

Ниски режийни

Важно е да се отбележи, че макар OProfile да не пречи на работата на вашите програми, той ще създаде малко режийни разходи и по този начин ще забави изпълнението. В нашите прости примери по-горе не създава проблем, но при програма с дълго изпълнение и обширни извиквания на функции вероятно ще забележите разлика. Поради това не бих препоръчал използването на тази програма в производствена сървърна среда, освен ако не се сблъскате с критичен проблем с производителността, който трябва да бъде решен с използване на живо. Дори тогава бих го използвал достатъчно дълго, за да открия проблема.

Заключение

OProfile е мощен инструмент за профилиране на производителността. Той достига до най-ниското ниво, налично в Linux, за да получи броячи на производителност и показатели, които ви дават ценна информация за вашите програми.

Отминаха дните на предположения при отстраняване на грешки в производителността - сега имате силата да знаете точно какво прави вашата система и как да я подобрите. Чрез изучаването на отчетите, генерирани от OProfile, можете да вземете информирани, управлявани от данни решения за оптимизиране на вашата система.

Най-добрите емулатори на игрови конзоли за Linux
Тази статия ще изброи популярния софтуер за емулация на игрова конзола, наличен за Linux. Емулацията е слой за софтуерна съвместимост, който емулира х...
Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...
Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...