Nā hōʻailona no nā kikowaena Linux: kahi koho o nā mea hana wehe
Ke hoʻomau nei mākou e kamaʻilio e pili ana i nā mea hana no ka loiloi ʻana i ka hana CPU ma nā mīkini Linux. I kēia lā i ka mea: temci, uarch-bench, likwid, perf-tools a me llvm-mca.
He mea hana kēia no ka helu ʻana i ka manawa hoʻokō o nā papahana ʻelua. ʻO ka mea nui, hiki iā ʻoe ke hoʻohālikelike i ka manawa hoʻokō o nā noi ʻelua. ʻO ka mea kākau o ka pono he haumāna mai Kelemania, ʻo Johannes Bechberger, nāna i hoʻomohala iā ia ma ke ʻano he ʻāpana o kāna tesis lae pua ma 2016. Mea paahana o keia la mahele ʻia e laikini ma lalo o ka GNU General Public License.
Ua makemake ʻo Johannes e hana i kahi mea hana e hiki ai iā ia ke ana i ka hana o kahi ʻōnaehana kamepiula ma kahi ʻano hoʻomalu. No laila, ʻo kekahi o nā hiʻohiʻona nui o ka temci ka hiki ke hoʻonohonoho i kahi ʻano hoʻāʻo. ʻo kahi laʻana, hiki: hoʻololi i nā hoʻonohonoho hoʻonohonoho hoʻonohonoho CPU frequency manager, hoʻopau hyper threading a me L1 a me L2 huna, e hoopau i ke ano turbo ma ka Intel processors, etc. manawa, perf_stat и hoʻohana.
ʻO kēia ke ʻano o ka pono i ka hihia mua:
# 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
Ma muli o nā hopena benchmarking, hana ka ʻōnaehana hōʻike kūpono me nā kiʻi, nā papa a me nā kiʻi, e hoʻokaʻawale i ka temci mai nā hopena like.
Ma waena o nā hemahema o temci, ʻo kona "'ōpiopio" ke kū nei. Ma muli o kēia ʻaʻole kākoʻo ʻia nā mea a pau lako lako a me na lako polokalamu. No ka laʻana, paʻakikī ke holo ma macOS, a ʻaʻole loaʻa kekahi mau hiʻohiʻona ma kahi ʻōnaehana ARM. I ka wā e hiki mai ana, hiki ke loli ke kūlana, ʻoiai ke hoʻomohala nei ka mea kākau i ka papahana, a ke piʻi mālie nei ka helu o nā hōkū ma GitHub - ʻaʻole i lōʻihi loa ka manawa i hala. kūkākūkā ʻia ma nā manaʻo ma ka Hacker News.
He mea pono no ka loiloi ʻana i ka hana o nā hana CPU haʻahaʻa haʻahaʻa, i hoʻomohala ʻia e ka ʻenekinia Travis Downs (ʻO Travis Downs). I kēia mau lā ua blog ʻo ia Nā Hana Hana ma nā ʻaoʻao GitHub, e kamaʻilio e pili ana i nā mea hana benchmarking a me nā mea pili ʻē aʻe. Ma keʻano laulā, ua hoʻomaka ka uarch-bench e loaʻa ka kaulana, akā ua maʻamau i oleloia poʻe kamaʻāina o Hacker News i nā pae kumuhana ma ke ʻano he mea hana no ka benchmarking.
Uarch-bench hiki iā ʻoe ke loiloi i ka hana hoʻomanaʻo, ka wikiwiki o ka hoʻouka ʻana i ka ʻikepili like a me ka hana hoʻomaʻemaʻe Kakau inoa YMM. Hiki ke ʻike ʻia ke ʻano o nā hopena benchmarking i hana ʻia e ka papahana i loko o ka waihona kūhelu ma ka lalo o ka ʻaoʻao.
He mea pono e hoʻomaopopo i kēlā uarch-bench, e like me temci, disables Hana ʻo Intel Turbo Boost (hoʻonui ʻo ia i ka wikiwiki o ka uaki ma lalo o ka hoʻouka ʻana) i kūlike nā hopena hōʻike.
I kēia manawa, aia ka papahana i ka hoʻomaka mua o ka hoʻomohala ʻana, no laila ʻaʻohe palapala kikoʻī o uarch-bench, a aia paha kāna hana i nā pōpoki - no ka laʻana, ʻike ʻia nā pilikia me ka hoʻomaka ʻana ma Ryzen. Eia kekahi, kākoʻo wale ʻia nā pae kuhikuhi no nā hale kiʻi x86. Hoʻohiki ka mea kākau e hoʻohui i nā hana hou aʻe i ka wā e hiki mai ana a kono iā ʻoe e komo i ka hoʻomohala ʻana.
He papa hana kēia no ka loiloi ʻana i ka hana o nā mīkini Linux me nā kaʻina hana Intel, AMD a me ARMv8. Ua hoʻokumu ʻia ma lalo o ka mana o ka German Federal Ministry of Education and Research ma 2017 a hoʻokuʻu ʻia i ka open source.
Ma waena o nā mea hana likwid, hiki iā mākou ke hōʻike i ka likwid-powermeter, e hōʻike ana i ka ʻike mai nā papa inoa RAPL e pili ana i ka mana i hoʻopau ʻia e ka ʻōnaehana, a me ka likwid-setFrequencies, e hiki ai iā ʻoe ke hoʻomalu i ka frequency processor. Hiki iā ʻoe ke ʻike i ka papa inoa piha loaa ma ka waihona.
Hoʻohana ʻia ka mea hana e nā ʻenekinia i komo i ka noiʻi HPC. No ka laʻana, me likwid nā hana he hui o nā loea mai ka Regional Computing Center o ke Kulanui o Erlangen-Nuremberg (RRZE) ma Kelemānia. Ua komo pū ʻo ia i ka hoʻomohala ʻana i kēia pūʻulu o nā mea hana.
ʻO kēia mea hana no ka nānā ʻana i ka hana o nā kikowaena Linux hoopuka Brendan Gregg. ʻO ia kekahi o nā mea hoʻomohala Hōʻailona - kahi hoʻolālā hoʻoikaika no ka hoʻopau ʻana i nā noi i ka manawa maoli.
Hoʻokumu ʻia nā perf-tools ma nā perf_events a me ftrace kernel subsystems. ʻO kā lākou mau pono e ʻae iā ʻoe e kālailai I/O latency (iosnoop), track system call arguments (unccount, funcslower, funcgraph and functrace) a hōʻiliʻili i nā ʻikepili ma nā "hits" i ka waihona waihona (cachestat). I ka hihia hope, ua like ke ʻano o ke kauoha:
Ua hoʻokumu ʻia kahi kaiāulu nui a puni ka mea kani (aneane 6 tausani hōkū ma GitHub). A aia kekahi mau hui e hoʻohana ikaika nei i nā mea hana perf, no ka laʻana Netflix. Akā ke hoʻomohala hou ʻia a hoʻololi ʻia ka mea hana (ʻoiai ua hoʻokuʻu ʻia nā mea hou i kēia manawa. No laila, hiki mai nā hewa i kāna hana - kākau ka mea kākau i kekahi manawa ke kumu o nā mea hana perf i ka weliweli kernel.
He mea hoʻohana e wānana i ka nui o ka helu helu mīkini waiwai e koi ai i nā CPU like ʻole. ʻO ia loiloi Nā ʻōlelo aʻo i kēlā me kēia pōʻaiapuni (IPC) a me ka ukana ma luna o ka lakohana i hana ʻia e kekahi noi.
Ua hōʻike ʻia ʻo llvm-mca ma 2018 ma ke ʻano o ka papahana LLVM, ka mea e hoʻomohala nei i kahi ʻōnaehana ākea no ka nānā ʻana, hoʻololi a me ka loiloi o nā papahana. Ua ʻike ʻia ua hoʻoikaika ʻia nā mea kākau o llvm-mca e kahi hopena no ka nānā ʻana i ka hana polokalamu. IACA mai Intel a ʻimi e hana i kahi ʻokoʻa. A e like me nā mea hoʻohana, ua like ka huahana o ka mea hana (ko lākou hoʻolālā a me ka nui) i ka IACA - hoʻohālike hiki ke loaa maanei. Eia naʻe, ʻae wale ʻo llvm-mca ʻO ka syntax AT&T, no laila pono ʻoe e hoʻohana i nā mea hoʻololi e hana pū me ia.
ʻO nā mea a mākou e kākau ai ma kā mākou blog a me nā ʻoihana pūnaewele: