Nečinné procesy systému nejvíce vytěžují CPU



Zdravím, mám Xpéčko, když se podívám na správce úloh tak zpravidla u nečinných procesů systému mám téměř pernamentně nejvyšší vytížení prosesoru. Občas to spadne na 5%, ale většinou to je stále mezi 40 až 80 % vytížení CPU. Co se může skrývat pod těmi nečinnými prosesi, které ve skutečnosti mi ukrajují min o polovičku výkon počítače. A počítač je neskonale líný. Žádné zbytečné programy se mi při startu nespouští, mám jen pouze antivir avast a vše ostatní je otázka systémových věcí WIN XP. Počítač pravidelně denně čistím CCleanerem, 2x do roka dělám defragmentaci, přesto se mi zdá pomalý. Procesor je tam Athlon XP 1.4 GHz, RAM 2 GB. Před 11 lety byl počítač svižný jak kolibřík, nyní pomalý jak šnek, přestože se pravidelně starám o údržbu a čistění. Nechápu to.
Mít nečinné procesy 100% znamená nulové zatížení procesoru.  
To je to, oč bys měl v klidu usilovat a ne se toho obávat.  
Pokud je 100% nemáš, najdi ty procesy, které výkon opravdu spotřebovávají a pokus se zjistit proč a zda se nejedná o viry.
<p>pro postgresql může být výkon procesoru velmi důležitý, zejména pokud do paměti ram zapadá poměrně vysoké procento aktivní pracovní sady vašich dat. většina databází, se kterými jsem pracoval, měla většinu času cpu jako hlavní překážku. (právě jsem zkontroloval vmstat na serveru hostujícím webové stránky s miliony přístupů denně, které hostovaly více než 5 tb databázového prostoru, a nikdy jsem neviděl více než 2% času čekání na disk, ale viděl jsem vrchol 12% času cpu uživatele.)</p><p>protože postgresql je založeno na procesech, každý jednotlivý proces může běžet jen tak rychle jako jedno jádro, ale ve směsi, jako máme na výše uvedeném serveru, s velkým objemem malých požadavků, je nejdůležitější celkový procesor ve všech jádrech. při stejném celkovém výkonu procesoru bude postgresql obecně pracovat lépe s menším počtem rychlejších jader než s mnoha pomalejšími jádry.</p><p>až do mezipaměti vysokého procenta aktivní sady dat je přidání ram obvykle pro buck zobrazí větší třesk než přidání jader. po dostatečném ukládání do mezipaměti je výhodou další ram klesá a máte lepší podporu při zvyšování výkonu procesoru).</p><p>pro více informací o tomto tématu, které se týká postgresql, si nemyslím, že existuje lepší zdroj než <a href="http://www.postgresql.org/docs/books/"><em> postgresql 9.0 vysoký výkon</em></a> od <strong> greg smith </strong>. (úplné zveřejnění, byl jsem technickým recenzentem knihy, ale nezískávám na základě prodeje žádné finanční výhody.)</p> <p><code>hi</code> je čas strávený přerušením zpracování hardwaru. hardwarová přerušení jsou generována hardwarovými zařízeními (síťové karty, řadič klávesnice, externí časovač, hardwarové senzory, ...), když potřebují něco signalizovat do procesoru (například data dorazila).</p><p>protože k tomu může dojít velmi často a protože v podstatě blokují aktuální cpu, zatímco jsou spuštěny, jsou popisovače hardwarového přerušení jádra psány tak rychle, jak je to jen možné.</p><p>pokud je třeba provést dlouhé nebo složité zpracování, jsou tyto úkoly odloženy pomocí mechanického volání <code>softirqs</code>. jsou naplánovány nezávisle, mohou běžet na jakémkoli cpu, mohou běžet souběžně (nic z toho neplatí pro popisovače přerušení hardwaru).</p><p><sub>část o tvrdých irq blokujících aktuální procesor a část o tom, že <code>softirqs</code> budou moci běžet kdekoli, nejsou úplně správné, mohou existovat omezení a některé tvrdé irq mohou přerušit jiné.</sub></p><p>jako příklad lze uvést, že hardwarové přerušení ze síťové karty „přijatá data“ by mohlo jednoduše uložit informace „karta ethx musí být obsluhována“ a naplánovat <code>softirq</code>. <code>softirq</code> by byla věc, která spouští skutečné směrování paketů.</p><p><code>si</code> představuje čas strávený v těchto <code>softirqs</code>.</p><p>dobré čtení o mechanismu <code>softirq</code> (s trochou historie) je také <a href="https://www.cs.unca.edu/brock/classes/spring2013/csci331/notes/paper-1130.pdf">dělám to později: softirqs, tasklets, dolní poloviny, fronty úkolů, pracovní fronty a časovače</a> = (pdf, 64 kb).</p><p><code>st</code>, „ukrást čas“, je relevantní pouze ve virtualizovaných prostředích. představuje čas, kdy skutečný procesor nebyl k dispozici aktuálnímu virtuálnímu počítači - byl „odcizen“ z toho vm) hypervizorem (buď pro spuštění jiného vm, nebo pro vlastní potřeby).</p><p>dokument <a href="https://www.ibm.com/developerworks/linux/linux390/perf/tuning\_cputimes.html">cpu time accounting</a> od ibm obsahuje více informací o krádeži času a účetnictví cpu ve virtualizovaných prostředích. (zaměřuje se na hardware typu zseries, ale obecná myšlenka je stejná pro většinu platforem.)</p> <p>nejobsáhlejší software pro testování zátěže, který jsem našel, je <a href="http://bit.ly/4r8g2l">hp loadrunner</a> (omlouvám se za bit.ly odkaz, ale hp odkaz je hrozný a nebude fungovat správně). je velmi flexibilní a ze zátěžových testů můžete generovat mnoho různých typů zpráv. můžete také nechat skupinu strojů pracovat společně s testem zatížení. ne, že ostatní nástroje jsou špatné, ale vypadá to jako <a href="http://jakarta.apache.org/jmeter/">apache jmeter</a> vypadá jako hračka.</p> <p>s ulimitem jsou nějaké problémy. zde je užitečné přečíst si toto téma: <a href="http://coldattic.info/shvedsky/pro/blogs/a-foo-walks-into-a-bar/posts/40">omezení času a spotřeby paměti programu v linux</a> , což vede k nástroji <a href="https://github.com/pshved/timeout">timeout</a> , který vám umožní proces v kleci (a jeho vidličky) ) podle času nebo spotřeby paměti.</p><p>nástroj timeout vyžaduje perl 5+ a <code>/proc</code> připojený souborový systém. poté zkopírujete nástroj do např. <code>/usr/local/bin</code> jako tak:</p><pre><code>curl https://raw.githubusercontent.com/pshved/timeout/master/timeout | \ sudo tee /usr/local/bin/timeout &amp;&amp; sudo chmod 755 /usr/local/bin/timeout </code></pre><p>poté můžete svůj proces „klecovat“ podle spotřeby paměti jako ve vaší otázce:</p><pre><code>timeout -m 500 pdftoppm sample.pdf </code></pre><p>nebo můžete použít <code>-t &lt;seconds&gt;</code> a <code>-x &lt;hertz&gt;</code> pro omezení procesu podle času nebo omezení cpu.</p><p>způsob, jakým tento nástroj funguje, je několikanásobná kontrola za sekundu, pokud proces tření nepřesáhl stanovené hranice. to znamená, že ve skutečnosti existuje malé okno, ve kterém by proces <em> mohl potenciálně </em> být nadměrně odebírat před vypršením časového limitu a proces zabije.</p><p>správnější přístup by tedy pravděpodobně zahrnoval cgroups, ale to je mnohem více zapojeno do nastavení, i když byste použili docker nebo runc, což mimo jiné nabízí uživatelsky příjemnější abstrakci kolem cgroups.</p> <p>obecně byste měli použít <code>kill</code> (zkratka pro <code>kill -s term</code> nebo na většině systémů <code>kill -15</code>) před <code>kill -9</code> (<code>kill -s kill</code>) dát cílovému procesu šanci na vyčištění po sobě. (procesy nemohou chytit nebo ignorovat <code>sigkill</code>, ale mohou a často to chytí <code>sigterm</code>.) pokud nedáte procesu šanci dokončit to, co dělá a vyčistit, je to může nechat poškozené soubory (nebo jiný stav) kolem, že nebude schopen pochopit, jakmile restartujete.</p><p><code>strace</code>/<code>truss</code>, <code>ltrace</code> a <code>gdb</code> jsou obecně dobré nápady, jak zjistit, proč je zaseknutý proces zaseknutý. (<code>truss -u</code> na systému solaris je zvláště užitečné; <code>ltrace</code> příliš často předkládám argumenty pro volání z knihovny v nepoužitelném formátu.) solaris má také užitečné <code>/proc</code>- založené nástroje, z nichž některé byly přeneseny do linuxu. (<code>pstack</code> je často užitečný).</p> <p>to záleží na tom, zda máte obavy z odsouzení, nebo vyřizování pravděpodobné příčiny (v usa).</p><p>předpokládejme, že jste doma. spustíte vpn a připojíte se k poskytovateli vpn mimo lokalitu. pokud sleduji odchozí provoz (z vašeho domu), vím, že jste se právě připojili k určité ip adrese a že ip adresa je poskytovatel vpn. všechno uvnitř užitečného zatížení paketu je šifrováno.</p><p>poté se rozhodnete, když budete doma, zkontrolovat svůj e-mail. stává se, že sleduji odchozí provoz od poskytovatele vpn (který není šifrovaný). zaznamenávám to vše pomocí odfrknutí a spustím wireshark proti výstupu. vidím spojení s vaší e-mailovou adresou a napsaný e-mail. to může být chráněno ssl, pokud je to webmail. pokud se jedná o běžný e-mail, je to pravděpodobně prostý text. pokud to není prostý text, mohu se pokusit zachytit ho v přijímači. e-mail nemá žádný právní význam (tj. nepoužíváte jej k plánování něčeho nezákonného). všiml jsem si však skutečnosti, že zaměňujete použití jejich, tam a tam jsou. všimnu si také několika idiomů, které chcete použít.</p><p>během sledování odchozího provozu vidím, že váš účet psal několik e-mailů. zaznamenávám vzory překlepů a další postavy řeči. sbírám je po dobu jednoho měsíce nebo dvou.</p><p>potom jsem vložil položky, které si všimnu, do wireshark. přidávám několik věcí, o kterých je vám známo. pokaždé, když dojde k překlepu nebo použití idiomu (který používáte) najdete v obsahu jakéhokoli paketu, který vychází z vpn služby, kterou používáte, vidím to.</p><p>za další měsíc nebo dva mám spoustu datových bodů. některé jsou weby, na které jste šli, jiné ne. první věc, kterou udělám, je odstranění všech datových bodů, které opustily poskytovatele služeb vpn, když jste nebyli online (tj. neviděl jsem vás online z domova, nezapomeňte, že jsem začal sledováním tohoto připojení).</p><p>pak se podívám na zbývající provoz a uvidím, jestli mám nějaké body clusteru. spousta opakujících se témat. stejný předmět přes over. porovnávám to s vaším nešifrovaným provozem a vaším e-mailem.</p><p>neaplikoval jsem dostatek filtrů, abych tě izoloval od hluku (lidé, kteří používají stejné idiomy/pravopisné chyby jako ty), ale měl bych dobrý důvod pro pravděpodobnou příčinu. pokud mám dostatek referenčních bodů, je to jako otisk prstu.</p><p>v podstatě aplikuji bayesovskou analýzu na korpus práce, abych uvedl něco o pravděpodobnosti, že věřím, že příkladem bude člen souboru vytvořeného mým podezřelým. sbírka děl, která bych srovnávala, pochází z jakékoli práce, za kterou podezřelý veřejně uznal, že za ni odpovídá. tato analýza je dobře známa (a existuje i celá statistika stackexchange webu).</p><p>nechám tě odpovědět, s čím bych v tuto chvíli přišel?</p> <p>nevím o ostatních, ale přemýšlím o sobě:</p><ul> <li>mám práci, se kterou jsem v současné době spokojený. pravidelně pracuji a dostávám pravidelné platby. samozřejmě je tu vždycky příliš mnoho věcí, ale práce je většinou zajímavá a <strong> pracovní vytížení je přibližně konstantní a předvídatelné </strong>. sotva na volné noze (považujte pracovní žádosti za <a href="http://en.wikipedia.org/wiki/poisson\_process">poissonův proces</a> a jak stabilita frekvence závisí na průměrné frekvenci; kavárna s 10 zákazníky a 1 toaletou není lineárně úměrná jídelně se 100 zákazníci a 10 toalet, tj. fronta není podobná).</li> <li>jít na volné noze by vyžadovalo <em> mě </em> dělat všechny <strong> marketing, prodej, byrokracii </strong> atd. nudné a děsivé ( ale jistě důležité) věci. vlastně si nemyslím, že bych to dokázal úspěšně. alespoň bych to nenáviděl.</li> </ul> <p><code>kill -9</code> ( <a href="http://en.wikipedia.org/wiki/sigkill"> sigkill </a> ) vždy funguje, za předpokladu, že máte oprávnění tento proces zabít. proces musí být v podstatě zahájen vámi a nesmí být setuid nebo setgid, nebo musíte být root. existuje jedna výjimka: ani root nemůže vyslat fatální signál na pid 1 (proces <code>init</code>).</p><p>nicméně <code>kill -9</code> není zaručeno, že bude fungovat <em> okamžitě</em>. všechny signály, včetně sigkill, jsou dodávány asynchronně: jádro může nějakou dobu trvat, než je doručí. dodání signálu obvykle trvá nanejvýš několik mikrosekund, právě čas potřebný k dosažení časového řezu. pokud však cíl má <a href="http://www.cis.temple.edu/~ingargio/cis307/readings/signals.html">zablokovaný signál</a> , bude signál zařazen do fronty, dokud jej cíl neodemkne.</p><p>normálně procesy nemohou sigkill blokovat. ale kód jádra může a zpracovává kód jádra, když volá <a href="http://en.wikipedia.org/wiki/system\_call">systémová volání</a> . kód jádra blokuje všechny signály, když přerušení systémového volání povede k špatně vytvořené datové struktuře někde v jádře nebo obecněji k narušení některých invariantů jádra. pokud tedy (kvůli chybě nebo nesprávnému designu) blokování systému trvá neomezeně dlouho, nemusí být žádný způsob, jak tento proces zabít. (ale proces <em> bude</em> bude zabit, pokud někdy dokončí systémové volání.)</p><p>proces zablokovaný při systémovém volání je v <a href="http://en.wikipedia.org/wiki/sleep\_%28operating\_system%29#uninterruptible\_sleep">nepřerušitelný spánek</a> . příkaz <code>ps</code> nebo <code>top</code> jej (ve většině odvětví) zobrazí ve stavu <code>d</code> (původně pro „<strong> d </strong> isk“ , myslím).</p><p>klasický případ dlouhého nepřerušitelného spánku je proces přístupu k souborům přes <a href="http://en.wikipedia.org/wiki/network\_file\_system\_%28protocol%29"> nfs </a> , když server neodpovídá; moderní implementace obvykle nezavádějí nepřerušitelný spánek (např. v systému linux umožňuje možnost připojení <code>intr</code> signál přerušit přístup k souborům nfs).</p><p>na výstupu <code>z</code> nebo <code>h</code> můžete někdy vidět položky označené <code>ps</code> (nebo <code>top</code> pod linuxem, nevím, co je rozdíl). technicky to nejsou procesy, jsou to zombie procesy, které nejsou ničím jiným než záznamem v tabulce procesů, takže rodičovský proces může být informován o smrti svého dítěte. když rodičovský proces <a href="http://pubs.opengroup.org/onlinepubs/009695399/functions/wait.html">věnuje pozornost</a> (nebo zemře), zmizí.</p> A kde je na PC? vyloučení vybraných složek z antivirové ochrany může se stát že váš antivirový program sníží rychlost scia engineer. následující příkladu ukazuje možné řešení pro ochranu symantec. program by se neměl vypínat úplně (to by bylo nebezpečné) ale můžete z jeho procesů vyloučit některé složky. nejprve nastavíte vyloučení souborů složek a procesů: zde můžete zadat konkrétní složky a podsložky scia engineer: tip: za určitých okolností může dojít k tomu že řešit nemůže během výpočtu zapisovat do svých souborů nebo z nich číst. proto je velmi důležité přidat mezi výjimky i dočasnou složku (temp). umístění této složky najdete v nastavení > možnosti > složky: vyloučení scia engineer z indexování windows search aby se uspíšil proces vyhledávání v počítači indexovací služba prohledává soubory a složky systému windows a nahrává informace o něm do indexovacího souboru. to ovšem také spotřebovává část kapacity systému takže je výhodné vyloučit indexování pro scia engineer. v ovládacích panelech můžete otevřít možnosti indexování: zde můžete kliknout na změnit a odstranit z výběru stejné složky jako v předchozím kroku: poznámka: tato opatření nenabízejí jen řešení pro urychlení výpočtu ale často také předejdou pádům programu.