Software testující hardwarové limity pro jiný software

Zdravim,
potreboval bych poradit, jestli existuje software (benchmark), ktery by dokazal sledovat beh jineho softwaru, a vyhodnotit, kde lezi limity hardwaru ci nastaveni. Nejlepe nezavisly na platforme. Cilem je ziskat informaci, jakou cast hardware je potreba posilit.

Prakticky:
Software uklada pri zpracovavani hodne malych souboru (~1 milion za 10 minut). Je ve stavajicim stavu limitujici rychlost zapisu na disk a nebo je to v software? Ma se poridit NVMe?
Software nasledne male soubory prohledava, spojuje, zobrazuje. Je limitem pamet? Nebo rychlost cteni/zapis na disk?
Software natahuje data z disku na zobrazeni, zabere 20 GB RAM z 64 GB, a pak se (treba zrovna dnes) zasekne. Co mu chybi, kdyz procesor volny je, pamet volna je, disk pracuje na 10% schopnosti?
Software pouziva paralelni procesovani - az do kolika extra vlaken existuje realny prinos?

Diky za rady,
O.
« Poslední změna: 02. 07. 2020, 18:11:02 od Petr Krčmář »


Medo77

  • ***
  • 125
    • Zobrazit profil
    • E-mail
Re:software testujici hardwarove limity pro jiny software
« Odpověď #1 kdy: 02. 07. 2020, 15:34:33 »
Co ti brani improvizovat ?
Pridat iny disk (Iny model, ine rozhranie).
Zmen pocet treadov na testovacom objeme dat, rozdiel uvidis ci to pomohlo ..
chodilo to v minulosti uspokojivo ?  co sa zmenilo ? (HW, OS).
Je ta app urcena pre konkretnu prevadzku a je aj takto prevadzkovana ?
(zelezo vs virtual), (desktop OS vs server OS).
Pokial krachne na dostatku systemovych prostriedkov, osobne mi to ukazuje na sw problem ..


Re:software testujici hardwarove limity pro jiny software
« Odpověď #2 kdy: 02. 07. 2020, 16:07:18 »
Mel jsem na mysli sofistikovanejsi pristup. Improvizovat mohu, ale jedno zpracovani data aplikaci trva cca 12 hodin, HW na prohazovani nemam, atd.
Pokud je tam SW problem, tak to nikdo neopravi, a ja jen potrebuji najit optimalni parametry pro beh (minimalizujici celkovy cas zpracovani ulohy).

Medo77

  • ***
  • 125
    • Zobrazit profil
    • E-mail
Re:software testujici hardwarove limity pro jiny software
« Odpověď #3 kdy: 02. 07. 2020, 17:36:18 »
Pozri, vzdy sa da pocas beziacej appky logovat system.. cpu, ram, iopsy,.. ale bud parametre v softe mozes alebo nemozes ovplyvnovat. Ak nie, ostava ti len improvizacia a hruba sila.
Co najrychlejsi cpu, cielovy subor na iny disk ako su zdrojove data (pripadne si sprav temp z ram ak sa tam subor zmesti), logovanie ti uz napovie kde je uzke hrdlo. Hypoteticky fragmentovany disk, neustale do procesu spajania kecajuci antivirus (ktory hyperaktivne skenuje aj to co nemusi), s diskom by sa pocas prace nemal hrat napr. Zalohovaci soft,...

Popis co mozes o softe a konkretnej masine...

Re:Software testující hardwarové limity pro jiný software
« Odpověď #4 kdy: 02. 07. 2020, 19:39:43 »
Zdravim,
potreboval bych poradit, jestli existuje software (benchmark), ktery by dokazal sledovat beh jineho softwaru, a vyhodnotit, kde lezi limity hardwaru ci nastaveni. Nejlepe nezavisly na platforme. Cilem je ziskat informaci, jakou cast hardware je potreba posilit.

Obecně profiler, který ukáže kolik času aplikace tráví v které metodě. Profiler sice sám ovlivní dobu běhu, ale může pomoci najít úzké hrdlo.

Dále může pomoci program spustit na pronajatém serveru, jiném systému, jiném hardware. Pro porovnání. Pronajatý server má výhodu, že si parametry můžete nadiktovat a že je můžete měnit. Ale je potřeba trochu znát vlastnosti daného pronajatého serveru (nedávno se tu řešila např. nevhodnost AWS pro běh Postgres). Někdo pronajímá i bare metal servery, to je možná v daném případě vhodnější. Otázka je, zda vám takový server pronajmou krátkodobě a za kolik.

Software uklada pri zpracovavani hodne malych souboru (~1 milion za 10 minut). Je ve stavajicim stavu limitujici rychlost zapisu na disk a nebo je to v software? Ma se poridit NVMe?
Software nasledne male soubory prohledava, spojuje, zobrazuje. Je limitem pamet? Nebo rychlost cteni/zapis na disk?

Tak to bude asi nejdřív náročné na IOPS a v druhé fázi na CPU nebo RAM.

Software natahuje data z disku na zobrazeni, zabere 20 GB RAM z 64 GB, a pak se (treba zrovna dnes) zasekne. Co mu chybi, kdyz procesor volny je, pamet volna je, disk pracuje na 10% schopnosti?
Software pouziva paralelni procesovani - az do kolika extra vlaken existuje realny prinos?

Pokud je program zaseklý a nevidíte ani přetížení disku, ani zaplnění ram a ani vytížení CPU - ani v userspace (proces programu) ani systemspace (kernel), pak program buď na něco čeká (síť, zámky na disku...) nebo hnije synchronizace mezi vlákny (která se blokují...). Pak nepomůže hrát si s hardware, je potřeba nejdříve dosáhnout plného vytížení počítače a ideálně vyváženého - IO, RAM, CPU.

Pokud má program nějaké nastavení, kde můžete nastavit, aby program využíval jen jedno vlákno, tak bych program spustil jen v jednom vlákně a sledoval výkon na jádro. Pak vlákna přidával a sledoval, zda roste propustnost, zda příliš neklesá výkon na jádro a zda dochází k saturaci počítače (CPU, RAM, IO).

Někdy program odvozuje počet vláken od počtu jader CPU, takže pokud nemá program odpovídající nastavení počtu jader, zkusil bych stejným způsobem omezovat jádra CPU (spuštěním ve virtuálce, nastavením afinity procesu k jádru anebo hardwarovým vypnutím jader). Pokud program používá systémová vlákna, uvidíte je ve výpisu procesů operačního systému, z toho můžete odvodit, jak se ve vztahu k vláknům chová (porovnáváte počet jader CPU vs počet vláken).  Pokud program používá vlastní vlákna, budete muset hledat způsob, jak je zobrazit (zde vlákno programu neodpovídá vláknu procesu v operačním systému, pak tedy záleží taky kolik procesů program spouští atd.).

Měl byste uvést co to je za program, v jakém jazyce, v jakém frameworku, zda má nějaké nastavení a zda lze kontaktovat výrobce nebo programátora, který za ním stojí. Plus všechny další okolnosti jako zda využívá program současně nějakou databázi apod.


Re:Software testující hardwarové limity pro jiný software
« Odpověď #5 kdy: 02. 07. 2020, 19:56:07 »
Ještě je potřeba zjistit, zda je pozorované zaplnění RAM (20 GB RAM z 64 GB) dané nějakým nastavením či vnějším omezením anebo zda program víc RAM prostě nepotřebuje.

Ohledně 12 hodin na jeden běh programu - pro testování budete potřebovat testovací scénář s kratším během než 12h. Lze takový připravit? Možná stačí minuty, ale můžete se zase dostat do problému s tím, že se změní nároky programu. Pokud například budete zpracovávat řádově menší množství souborů, klesnou nároky na čas, současně ale i na paměť a IOPS. Ale i to je způsob, jak testovat vlastnosti programu.

luvar

  • ***
  • 120
    • Zobrazit profil
    • E-mail
Re:Software testující hardwarové limity pro jiný software
« Odpověď #6 kdy: 02. 07. 2020, 20:10:18 »
Ono, ak je budget a nie je chut hrat sa, tak existuju spolocnosti, ktore testovanie zivi a taketo veci zvyknu zvladat efektivnejsie a hlavne so skusenostami... Aj by som odporucil dajaku, ale pride mi to nevhodne.

PS: Ak sa jedna o linux, na ktorom bezi SUT (system under test), tak odporucam ozriet http://www.brendangregg.com/linuxperf.html a podobne. Minimom je monitoring za pomoci
Kód: [Vybrat]
sar -d 1,
Kód: [Vybrat]
vmstat,
Kód: [Vybrat]
iotop,
Kód: [Vybrat]
htop, ci dacoho podobneho. O stipku lepsie zvykne vyjst monitoring ako prometheus (node_exporter), zabbix, cacti alebo ine. Na zahodenie nie je ani pristup, kedy sa docasne zaplati (alebo evaluacna licencia na par dni) nieco ako ponuka New Relic, kde poskytuju aplikacny monitoring a maju rozne oblasti pokryte imho na urovni.

Re:Software testující hardwarové limity pro jiný software
« Odpověď #7 kdy: 02. 07. 2020, 20:51:51 »
Dekuji za reakce. Je to software MS-DIAL z Japonska http://prime.psc.riken.jp/compms/msdial/main.html
C++ / .NET, ale prepisuje se na ostatni platformy. Ucel programu je hledani, srovnavani, pocitani, zobrazovani dat.

Cas: pri male nalozi dat se HW limity nepozoruji, ale pri vysokem vykonu (vice vstupnich dat nez je k dispozici vlaken, jednotky milionu zaznamu v db), nekdy nestiha. Vnejsi omezeni nejsou.

Vykon na jedno vlakno lze jen castecne simulovat na virtualnim stroji. Pocet pouzitelnych vlaken se definuje na pevno. VCPU se nechova jako CPU nebo jako vlakno, takze se spatne predikuje, jestli koupit Threadripper.

Citace
Pokud je program zaseklý a nevidíte ani přetížení disku, ani zaplnění ram a ani vytížení CPU - ani v userspace (proces programu) ani systemspace (kernel), pak program buď na něco čeká (síť, zámky na disku...) nebo hnije synchronizace mezi vlákny (která se blokují...). Pak nepomůže hrát si s hardware, je potřeba nejdříve dosáhnout plného vytížení počítače a ideálně vyváženého - IO, RAM, CPU.
To je ta zahada - vseho ma dost, ta cast procesu je jen jednoprocesorova, nacita do pameti, a pak proste nekdy prestane a nekdy dobehne do konce.

Muzete prosim doporucit nejaky profiler? Nejlepe takovy, ktery se da pouzit v linuxu i ve Windows. Jiz drive jsme u podobneho softwaru dosli k zaveru, ze multithreading funguje jen u Intelu a ne u AMD (asi kvuli instrukcnim sadam), protoze na AMD platforme padal s chybou o neuspesnem navazani vlaken pri n=64+.
Idealne abych mohli zjistit, co nefunguje pro nase pouziti, a pozadat autora, aby to vcas behem portovani opravil.

Re:Software testující hardwarové limity pro jiný software
« Odpověď #8 kdy: 02. 07. 2020, 22:53:08 »
S profilerem pro .NET neporadím, věnuji se javě. Ale koukám, že jsou dostupné zdrojové kódy - i průměrný vývojář v .NET by neměl mít problém program s profilerem spustit. Komplikovanější to bude, pokud část té kritické operace běží v C++. Pokud bude problém v C++ kódu, tak to sice v .NET profileru asi uvidíte, ale mohou scházet detaily pro prozkoumání/opravu C++ kódu. Odhaduji, že tam uvidíte jen, že se volá nativní knihovna a která funkce, ale trasování na úrovni C++ už neuvidíte.

Ještě někdy může pomoc spustit program se strace. Uvidíte systémová volání. Tam třeba někdy vidíte na co se čeká nebo na čem to spadlo. Akorát těch volání budou tuny, dá se ovšem omezit, co se trasuje.

Zkuste kontaktovat kolegy, co používají stejný software. Koukám, že tam mají i diskuzní fórum...

_Jenda

  • ****
  • 382
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Software testující hardwarové limity pro jiný software
« Odpověď #9 kdy: 02. 07. 2020, 23:14:35 »
Čeká na disk → proces bude ve stavu D

Hotspoty na CPU → spustit přes program perf

Deadlock → thread sanitized, gdb

Medo77

  • ***
  • 125
    • Zobrazit profil
    • E-mail
Re:Software testující hardwarové limity pro jiný software
« Odpověď #10 kdy: 03. 07. 2020, 09:25:38 »
(vice vstupnich dat nez je k dispozici vlaken, jednotky milionu zaznamu v db), nekdy nestiha.
Hovorime o akej DB ?
Databaza sa neustala nafukuje, alebo po spracovani dat je to vyflushnute, a zase sa to zacina plnit od zaciatku pri dalsom koliecku ? O akej velkosti sa cca bavime?
Ta masina je dedikovana na tuto pracu ? (Asi ano). Co je to zac ? Desktop, ci server ? Zelezo, ci virtual ?
Ak virtual, aka platforma ?

Re:Software testující hardwarové limity pro jiný software
« Odpověď #11 kdy: 03. 07. 2020, 13:03:15 »
Neviem prečo sa pýtate tuná kde o tom software nikto nepočul a nevyužijete špecializované fórum
http://www.metabolomics-forum.com/index.php

Re:Software testující hardwarové limity pro jiný software
« Odpověď #12 kdy: 03. 07. 2020, 16:16:02 »
Doporučuji kouknout na tento web: http://www.brendangregg.com/linuxperf.html

Re:Software testující hardwarové limity pro jiný software
« Odpověď #13 kdy: 03. 07. 2020, 16:49:56 »
Doporučuji kouknout na tento web: http://www.brendangregg.com/linuxperf.html

Hezké, ten diagram je dobrý tahák k vytištění a pověšení nad stůl :)

Re:Software testující hardwarové limity pro jiný software
« Odpověď #14 kdy: 04. 07. 2020, 17:01:20 »
Diky, tohle je idealni zdroj informaci.
Doporučuji kouknout na tento web: http://www.brendangregg.com/linuxperf.html

Hezké, ten diagram je dobrý tahák k vytištění a pověšení nad stůl :)