Portál AbcLinuxu, 12. května 2025 15:48
HW myslím že mám dostatečně výkonný. S diskem to má společné to, že když se mi ty programy spustí v návaznosti těsně po sobě, nebude tolik seekovat a ve vysledku se to spustí rychleji...A na to jsi přišel jak? To si jenom myslíš, že? Ono myslet, znamená ho..o vědět.
Předpokládám, že programy mají běžet současně a jako problém se ti jeví úvodní část jejich běhu, ukončená například naběhnutím hlavního okna v případě GUI aplikace, zahájením akceptování spojení serverem apod. OS přechod do takového stav neidentifikuje a ani nemůže, neboť jde o vnitřní stav aplikace.Konečně mě někdo pochopil a nehledal v mé otázce, do čeho si rýpnout. Díky, tahle odpověď mi stačí
Konečně mě někdo pochopil a nehledal v mé otázce, do čeho si rýpnout.a ty, co se vám snažily naznačit, že paralelní přístup k disku by měl řídit plánovač IO, jste nepochopil vy
&&
. A kdyz jim chces dat oddech, tak tam nasazel sleep
y &
mene strace
m s vystupem "nekam", a ted vystup checkovat, jestli se porad zvetsuje, nebo uz ma stabilni velikost. Doufam, ze jsem to napsal srozumitelne.
man strace
stracem to nepůjde, protože to by se proces programu musel okamžitě uspat, aby strace už nic nevypisoval. Stačí jediný pohyb paměti a tenhle způsob půjde do háje. Zelenýho.
Popravdě mě přijde celý dotaz jako naprostá kravina. Prostě použij ; (a když už, tak i nějaký sleep). Jinou možnost ani nemáš, protože jak už tu někdo psal by program musel posílat nějaký signál, že už je spuštěný. A to že to zrovna tyhle programy budou dělat je hoodně nepravděpodobné.
Pocit, že se programy takhle spustí rychleji je podle mně zcela mimo. Hlavičky hard disku musí tu cesto projít stejně v každém případě. Fragmentace souborů v systému bude přítomná vždy a lítání hlav tedy taky. Máš tedy v podstatě na výběr jestli hlavičky budou překmitávat rychle nebo pomalu (a to takřka stejným způsobem). To že to dělá větší kravál opravdu neznamená, že je to pomalejší.
Samozřejmě existuje teoretická možnost, že tvůj způsob bude rychlejší. A to v případě, že všechna data budou uložená na disku za sebou přesně v tom pořadí, v jakém se čtou (včetně všech knihoven). S tím se prakticky nesetkáte (existuje patch pro kernel, který dělá něco takového, ale jen po dobu bootu). Ovšem to by se program musel začít spouštět okamžitě po načtení dat předchozího (tedy i před jeho kompletním spuštěním) aby se hlavičky nestihly zaparkovat nebo tak něco.
PS: Navíc firmware disku si může dělat co chce, takže na OS bych v tomhle zrovna moc nespoléhal.
#!/usr/bin/python from __future__ import division import time def sumsys_iowait(): statline = file('/proc/stat').readline().split()[1:8] ints = [int(x) for x in statline] sumsys = sum(ints) iowait = ints[4] #IOWAIT return sumsys, iowait s_old, i_old = sumsys_iowait() while True: time.sleep(0.2) s, i = sumsys_iowait() iowait = (i-i_old)/(s-s_old) print iowait if iowait > 0.5: break s_old = s i_old = iSchválně jsem obrátil podmínku a nastavil, ať program skončí až se aktivita disku _zvýší_ nad 0.5 - ať je to zajímavější. Pětkrát za sekundu kontroluju IOWAIT což většinou odpovídá aktivitě disku (ale nemusí).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.