Հենանիշներ Linux սերվերների համար. բաց գործիքների ընտրություն
Մենք շարունակում ենք խոսել Linux մեքենաների վրա պրոցեսորի աշխատանքը գնահատելու գործիքների մասին: Այսօր նյութում՝ temci, uarch-bench, likwid, perf-tools և llvm-mca:
Սա երկու ծրագրերի կատարման ժամանակը գնահատելու գործիք է։ Ըստ էության, այն թույլ է տալիս համեմատել երկու հավելվածների կատարման ժամանակը: Կոմունալ ծրագրի հեղինակը Գերմանիայից ժամանած ուսանող Յոհաննես Բեխբերգերն էր, ով այն մշակել է որպես իր բակալավրիատի թեզի մաս 2016թ. Այսօրվա գործիքը տարածվում է լիցենզավորված GNU Ընդհանուր հանրային լիցենզիայի ներքո:
Յոհաննեսը ցանկանում էր ստեղծել մի գործիք, որը թույլ կտա նրան չափել հաշվողական համակարգի աշխատանքը վերահսկվող միջավայրում: Հետևաբար, temci-ի հիմնական հատկանիշներից մեկը թեստային միջավայր ստեղծելու հնարավորությունն է: Օրինակ, կարելիՓոխել պրոցեսորի հաճախականության կառավարչի կարգավորումները, անջատել հիպեր threading և L1 և L2 քեշերը, անջատել տուրբո ռեժիմը Intel պրոցեսորների վրա և այլն: Հենանիշավորման համար temci-ն օգտագործում է գործիքներ ժամանակ, perf_stat и հափշտակություն.
Ահա թե ինչ տեսք ունի կոմունալը առաջին դեպքում.
# compare the run times of two programs, running them each 20 times
> temci short exec "sleep 0.1" "sleep 0.2" --runs 20
Benchmark 20 times [####################################] 100%
Report for single runs
sleep 0.1 ( 20 single benchmarks)
avg_mem_usage mean = 0.000, deviation = 0.0
avg_res_set mean = 0.000, deviation = 0.0
etime mean = 100.00000m, deviation = 0.00000%
max_res_set mean = 2.1800k, deviation = 3.86455%
stime mean = 0.000, deviation = 0.0
utime mean = 0.000, deviation = 0.0
sleep 0.2 ( 20 single benchmarks)
avg_mem_usage mean = 0.000, deviation = 0.0
avg_res_set mean = 0.000, deviation = 0.0
etime mean = 200.00000m, deviation = 0.00000%
max_res_set mean = 2.1968k, deviation = 3.82530%
stime mean = 0.000, deviation = 0.0
utime mean = 0.000, deviation = 0.0
Հենանիշավորման արդյունքների հիման վրա համակարգը ստեղծում է հարմար հաշվետվություն գծապատկերներով, աղյուսակներով և գրաֆիկներով, որոնք տարբերում են տեմսին նմանատիպ լուծումներից։
Տեմչիի թերությունների մեջ առանձնանում է նրա «երիտասարդությունը»։ Սրա պատճառով նա ամեն ինչ չէ, որ աջակցվում է ապարատային և ծրագրային ապահովման կոնֆիգուրացիաներ: Օրինակ, դժվար է գործարկել macOS-ով, և որոշ գործառույթներ հասանելի չեն ARM-ի վրա հիմնված համակարգում: Ապագայում իրավիճակը կարող է փոխվել, քանի որ հեղինակը ակտիվորեն զարգացնում է նախագիծը, իսկ GitHub-ում աստղերի թիվը աստիճանաբար ավելանում է. ոչ այնքան վաղուց նույնիսկ temci-ն: քննարկվել է մեկնաբանություններում Hacker News-ում։
Ցածր մակարդակի պրոցեսորի գործառույթների կատարողականը գնահատելու օգտակար ծրագիր, որը մշակվել է ինժեներ Թրևիս Դաունսի կողմից (Թրևիս Դաունս) Վերջերս նա բլոգում է Կատարման հարցեր GitHub Pages-ում, որը խոսում է չափորոշիչ գործիքների և հարակից այլ բաների մասին: Ընդհանուր առմամբ, uarch-bench-ը նոր է սկսում ժողովրդականություն ձեռք բերել, բայց դա արդեն բավականին տարածված է նշված Hacker News-ի ռեզիդենտները թեմատիկ թեմաներում՝ որպես չափորոշիչի կիրառման գործիք:
Uarch-bench-ը թույլ է տալիս գնահատել հիշողության աշխատանքը, տվյալների զուգահեռ բեռնման արագությունը և մաքրման աշխատանքը YMM գրանցում է. Ինչ տեսք ունեն ծրագրի կողմից գեներացված համեմատական արդյունքները, կարելի է գտնել պաշտոնական պահոցում էջի ներքևում։
Հարկ է նշել, որ ուարխ-նստարանը, ինչպես temci, անջատում է Intel Turbo Boost ֆունկցիան (այն ավտոմատ կերպով մեծացնում է պրոցեսորի ժամացույցի արագությունը ծանրաբեռնվածության դեպքում), որպեսզի թեստի արդյունքները համապատասխանեն:
Առայժմ նախագիծը մշակման վաղ փուլում է, ուստի uarch-bench-ը չունի մանրամասն փաստաթղթեր, և դրա շահագործումը կարող է պարունակել սխալներ, օրինակ. դժվարությունները հայտնի են Ryzen-ի գործարկումով: Բացի այդ, աջակցվում են միայն x86 ճարտարապետությունների հենանիշները: Հեղինակը խոստանում է հետագայում ավելացնել ավելի շատ ֆունկցիոնալություն և հրավիրում է ձեզ միանալ մշակմանը:
Սա Intel, AMD և ARMv8 պրոցեսորներով Linux մեքենաների աշխատանքը գնահատելու գործիքների հավաքածու է: Այն ստեղծվել է Գերմանիայի կրթության և հետազոտությունների դաշնային նախարարության հովանու ներքո 2017 թվականին և թողարկվել բաց կոդով:
likwid գործիքներից կարելի է առանձնացնել likwid-powermeter-ը, որը ցուցադրում է RAPL ռեգիստրներից տեղեկատվություն համակարգի կողմից սպառվող էներգիայի մասին, ինչպես նաև likwid-setFrequencies, որը թույլ է տալիս վերահսկել պրոցեսորի հաճախականությունը: Դուք կարող եք տեսնել ամբողջական ցանկը գտնել պահեստում.
Գործիքը օգտագործվում է HPC-ի հետազոտության մեջ ներգրավված ինժեներների կողմից: Օրինակ՝ likwid-ի հետ աշխատանքներ Գերմանիայի Էրլանգեն-Նյուրնբերգի համալսարանի (RRZE) տարածաշրջանային հաշվողական կենտրոնի մասնագետների խումբ: Նա նաև ակտիվ մասնակցություն է ունենում գործիքների այս հավաքածուի մշակմանը:
Այս գործիքը Linux սերվերների աշխատանքը վերլուծելու համար ներկայացրեց Բրենդան Գրեգ. Նա մշակողներից է DTrace — իրական ժամանակում հավելվածների վրիպազերծման դինամիկ հետագծման շրջանակ:
perf-tools-ը հիմնված է perf_events և ftrace միջուկի ենթահամակարգերի վրա: Նրանց կոմունալ ծառայությունները թույլ են տալիս վերլուծել I/O հետաձգումը (iosnoop), հետևել համակարգի կանչերի փաստարկներին (unccount, funcslower, funcgraph և functrace) և հավաքել վիճակագրություն ֆայլերի քեշում «հարվածների» վերաբերյալ (cachestat): Վերջին դեպքում հրամանն այսպիսի տեսք ունի.
Գործիքի շուրջ բավականին մեծ համայնք է ձևավորվել (գրեթե 6 հազար աստղ GitHub-ում) Եվ կան ընկերություններ, որոնք, օրինակ, ակտիվորեն օգտագործում են perf-tools Netflix. Բայց գործիքը հետագայում մշակվում և փոփոխվում է (չնայած թարմացումները վերջերս շատ հազվադեպ են թողարկվել): Հետևաբար, դրա շահագործման մեջ կարող են սխալներ առաջանալ. հեղինակը գրում է, որ երբեմն perf-tools-ը միջուկի խուճապ է առաջացնում:
Կոմունալ, որը կանխատեսում է, թե քանի հաշվողական ռեսուրսներ կպահանջվի մեքենայի կոդը տարբեր պրոցեսորների վրա: Նա գնահատում է Ցուցումներ մեկ ցիկլով (IPC) և ապարատային բեռը, որը ստեղծում է որոշակի հավելված:
llvm-mca-ն նախագծի շրջանակներում ներկայացվել է 2018թ LLVM, որը մշակում է ծրագրերի վերլուծության, վերափոխման և օպտիմալացման ունիվերսալ համակարգ։ Հայտնի է, որ llvm-mca-ի հեղինակները ոգեշնչվել են ծրագրային ապահովման կատարողականի վերլուծության լուծումից. IACA Intel-ից և ձգտել է այլընտրանք ստեղծել: Եվ ըստ օգտատերերի, գործիքի արդյունքը (դրանց դասավորությունը և քանակը) իսկապես նման է IACA-ին. օրինակ. կարելի է գտնել այստեղ. Այնուամենայնիվ, llvm-mca-ն միայն ընդունում է AT&T շարահյուսություն, այնպես որ, ամենայն հավանականությամբ, ստիպված կլինեք օգտագործել փոխարկիչներ դրա հետ աշխատելու համար:
Ինչի մասին ենք գրում մեր բլոգներում և սոցիալական ցանցերում.