Životnost SSD disku



V nějaké diskuzi jsem četl, že disky s MLC čipy mají životnost od 1000 - 10 000 zápisu do stejné stránky. U čipů SLC je to až desetinásobek - 100 000 zápisů. Když si tedy koupím SSD disk 16GB a dám na něj vokna+nějaký program a zaplním ho (jen příklad) cca 13GB. Takže mi zbydou 3GB. Když v těch zbylých 3GB bude soubor temp,koš-prostě spousta věcí co se pořád mažou a mění, tak to znamená, že mi ten disk při pilné práci odejde třeba za týden? A že třeba 1000x vysypu plnej koš(3GB) a je po disku?
Napsal jsi "Jinak pokud potřebuješ informace, klidně ti řeknu kde jsou". Já jsem tě požádal, aby jsi řekl, kde jsou vysvětlující info. ke tvé odpovědi a ty napíšeš tohle? Slovo "subjektivní závažnost", ale čeho, když nevím o čem jsi psal? Slovo "nadsázka", ale zase čeho? Slovo "existují prosťáčkové", kdo to je? Pokud teda nechceš odpovědět, tak aby to každý pochopil, tak promin, ale asi si nějak nerozumíme jako lidi a nemá cenu to dál řešit. Měj se pěkně a hodně takových krásných odpovědí.
<p>máte dobrý popis toho, jak smart pracuje na <a href="http://en.wikipedia.org/wiki/s.m.a.r.t.">wikipedia</a> . ale rychlé úvod:</p><ul> <li> <p>hodnota: jedná se o hrubou hodnotu, kterou hlásí řadič. obvykle je to snadno srozumitelná hodnota (jako je napájení v hodinách nebo teplota), ale někdy tomu tak není (jako četnost chyb při čtení). různí výrobci mohou pro tato data použít různé struktury a významy.</p> </li> <li> <p>normalized: toto je výše uvedená normalizovaná hodnota, takže vyšší hodnota je vždy lepší. míra čtení/chyb 114 je tedy lepší než 113. opět platí, že váš pevný disk převádí nezpracovaná data na normalizovanou hodnotu.</p> </li> <li> <p>nejhorší: nejhorší <em> normalizovaná </em> hodnota, kterou měl váš disk v minulosti (kde 99 je pravděpodobně tovární nastavení).</p> </li> <li> <p>prahová hodnota: když je <em> normalizovaná </em> hodnota <em> nižší </em> než tato hodnota, jednotka je pravděpodobně selže.</p> </li> </ul><p>zdá se tedy, že váš pevný disk je v pořádku. hodnota četnosti chyb při čtení není časem selhání jednotky, ale některé strukturou dat, která závisí na výrobci disku.</p> <p>čisté stránky jsou stránky, které se od mapování nezměnily (textové sekce ze sdílených knihoven se obvykle čtou pouze z disku (je-li to nutné), nikdy se neupravují, takže budou na sdílených, čistých stránkách).<br> špinavé stránky jsou stránky, které nejsou čisté (tj. byly upraveny).</p><p>soukromé stránky jsou k dispozici pouze pro tento proces, sdílené stránky jsou mapovány jinými procesy<sup>*</sup>.</p><p>rss je celkový počet stránek, sdílených nebo ne sdílených, aktuálně mapovaných do procesu. takže <code>shared\_clean</code> + <code>shared\_dirty</code> by byla sdílená část rss (tj. část rss, která je také mapována do jiných procesů) a <code>private\_clean</code> + <code>private\_dirty</code> soukromá část rss (tj. mapována pouze v tomto procesu).</p><p>pss (poměrná velikost sdílené složky) je, jak jste popsali. soukromé stránky se sčítají tak, jak jsou, a velikost každého sdíleného mapování se dělí počtem procesů, které je sdílejí.<br> takže pokud měl proces 100 000 soukromých stránek, 500 000 stránek sdílených s jedním dalším procesem a 500 000 sdílených se čtyřmi dalšími procesy, pss by byla:</p><pre><code>100k + (500k / 2) + (500k / 5) = 450k </code></pre><p>další údaje:</p><ul> <li> <a href="http://lwn.net/articles/230975/">elc: kolik paměti aplikace skutečně používají?</a> </li> <li> <a href="http://www.kernel.org/doc/documentation/filesystems/proc.txt"><code>documentation/filesystems/proc.txt</code></a> ve zdroji jádra</li> <li> <a href="http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html"><code>man proc(5)</code></a> </li> <li> <a href="http://tldp.org/ldp/khg/hypernews/get/memory/linuxmm.html">přehled správy paměti linux</a> </li> <li> <a href="http://tldp.org/ldp/tlk/mm/memory.html">správa paměti</a> na tldp.org</li> <li> <a href="http://linux-mm.org/">linuxmm</a> </li> </ul><p>pokud jde o částky za celý proces:</p><ul> <li> <p><code>rss</code> může být (přibližně<sup>+</sup>) získané součtem položek <code>rss:</code> v <code>smaps</code> (nemusíte sčítat sdílené/soukromé sdílené/špinavé položky).</p> <pre><code>awk '/rss:/{ sum += $2 } end { print sum }' /proc/$$/smaps </code></pre></li> <li>hodnoty <code>pss:</code> můžete sčítat stejným způsobem, abyste získali globální proces <code>pss</code>.</li> <li><code>uss</code> není hlášeno v <code>smaps</code>, ale ve skutečnosti jde o součet soukromých mapování, takže je můžete získat stejným způsobem</li> </ul><p><sub><sup>*</sup>upozorňujeme, že stránka „sdílená s možností sdílení“ se počítá jako soukromé mapování, dokud není <em> skutečně </em> sdílena. tj. pokud v současné době existuje pouze jeden proces používající <code>libfoo</code>, textová část knihovny se objeví v <em> soukromých </em> mapování procesu. ve sdílených mapováních (a odstraněných ze soukromých) bude účtována pouze v případě, že/když jiný proces začne používat tuto knihovnu.</sub><br> <sub><sup>+</sup>hodnoty se nesčítají přesně pro všechny procesy. není si úplně jistý, proč ... promiňte.</sub></p> <p>ano, se 100% pokrytím budete psát několik testů, které nepotřebujete. bohužel jediným spolehlivým způsobem, jak určit, které testy nepotřebujete, je napsat je všechny a poté počkat asi 10 let, abyste zjistili, které z nich nikdy selhaly.</p><p>udržování mnoha testů není obvykle problematické. mnoho týmů má automatizovanou integraci a testy systému na 100% pokrytí testem jednotek.</p><p>nejste však ve fázi údržby testu, hrajete dohání. je mnohem lepší mít 100% vašich kurzů při 50% testovacím pokrytí než 50% vašich kurzů při 100% testovacím pokrytí a zdá se, že váš náskok se snaží přimět vás, abyste odpovídajícím způsobem přidělili svůj čas. poté, co máte tuto základní linii, pak dalším krokem je obvykle tlačení o 100% u souborů, které se v budoucnu změní.</p> <p>na vaši otázku neexistuje jednoduchá odpověď, ale zde je několik věcí, na které byste se měli zamyslet.</p><p>zaprvé, měřítko není jediná věc, o kterou se musíme starat. co děláte s vašimi daty je. pokud máte 500 tabulek 30 tb dat a děláte jednoduché oltp s velmi malým počtem hlášení), nemyslím si, že budete mít příliš mnoho problémů "tam jsou 32tb databáze na postgresql tam venku. zároveň se však výkon poněkud sníží, protože to musí zasáhnout disk na všechno. podobně, pokud máte 50 tb, pokud data, ale mají běžně zasaženou sadu asi 100 gb, pak můžete postavte server s dostatečným množstvím ram), abyste tuto část db udrželi v paměti a jste zlatí.</p><p>na druhou stranu, pokud se pokoušíte režim (nejběžnější hodnotu) z 1tb dat, nezáleží na tom, jaký systém používáte, bude to <em> bolestivé </em> s nebo bez střepů. (edit: sharding může ve skutečnosti tento problém zhoršit <em>. </em>)</p><p>mezi hlavní problémy, s nimiž se setkáte s obrovskými db na mysql a postgresql, patří skutečnost, že ani nepodporuje paralelismus dotazování. jinými slovy, dotaz je spuštěn jako jeden blok jedním vláknem a nelze jej rozdělit na kousky a spustit samostatně. toto je nejčastěji problém při spouštění velkých analytických dotazů na velké množství dat. to je místo, kde postgres-xc a green plum přicházejí k záchraně, protože oddělují úložiště od provádění, a mohou tak učinit na úrovni koordinátora. všimněte si, že postgres-xc a green plum v zásadě používají střepiny interně, ale koordinátoři prosazují veškerou konzistenci globálně.</p><p>s paralelizací dotazování můžete dotaz rozdělit, mít různé procesory/diskové i/o kanály spouštět jeho části a vykazovat zpětné části sady výsledků, které mají být sestaveny, a předány zpět do aplikace. to je opět velmi užitečné při analytickém namísto zpracování transakcí.</p><p>druhou věcí je, že některé systémy, například vertica nebo greenplum, uchovávají sloupce informací společně. to ztěžuje použití systému z perspektivy oltp) a snižuje tam výkon, ale drasticky zvyšuje výkon pro velké analytické pracovní zatížení. jedná se tedy o kompromis specifický pro pracovní vytížení.</p><p>odpověď je, že jakmile se dostanete nad 1-2 tb ve velikosti, kterou můžete <em>, můžete </em>, ocitnout se tváří v tvář číslu kompromisů mezi systémy a pracovním zatížením. opět je to specifické pro databáze, velikost pracovních sad atd. nicméně v tomto bodě musíte opravdu jít se systémy sněhové vločky, tj. systémy jedinečné a přizpůsobené vašemu pracovnímu zatížení.</p><p>to samozřejmě znamená, že limity nejsou obecně kvantifikovatelné.</p><p><strong>pravit</strong>: nyní jsem pracoval s 9tb databází, která zpracovává směs pracovní podpory při rozhodování a transakčního zpracování v postgresql. jedinou největší výzvou je, že pokud máte otázky, které zasáhly velkou část sady dat, budete muset chvíli počkat na odpověď.</p><p>nicméně s pečlivou pozorností k základům (včetně indexů, autovaku, jak tyto fungují na nízké úrovni atd.) a dostatečným výpočetním prostředkům, jsou zcela zvládnutelné (a odhaduji, že by dobře zvládnutelné do rozsahu 30tb v pg).</p><p><strong>edit2</strong>: jakmile se vydáte na 100 tb, i když to, co bude fungovat, bude záviset na vašem datovém souboru. momentálně pracuji na jednom, který se do tohoto rozsahu nevejde, protože to nejprve zasáhne limit 32 tb v tabulce v postgresql.</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řed více než rokem ještě fungoval jiný systém lekcí - v lekci bylo vždy 20 vět a člověk měl jenom 3 životy/srdíčka, což znamenalo, že mohl udělat maximálně 3 chyby. 4. chyba = konec, začni lekci znovu. Tento systém dodnes funguje, když si dáte "Vyzkoušet z dovednosti" nebo jak že se to jmenuje, prostě když uděláte souhrnný test z daného tematického okruhu místo dělání jednotlivých cvičení.


Takže občasnou poznámku o srdičcích s klidem ignorujte. ...v klidu...a výměna max.po 10 000 km nájezdu...pokud si auto chcete nechat-turbina(y) vám časem podekuje(i)... běžná závada grafiky (integrované) nebo základové desky - oprava dražší než koupě nového ... máte-li v záruce, reklamujte. Nemáte-li, vyjměte si HDD a prodejte na ND. <p>za tento limit můžete poděkovat ibm <a href="http://en.wikipedia.org/wiki/punched\_card">punčová karta</a> - měla 80 sloupců:</p><p><img src="https://i.stack.imgur.com/xvpky.jpg" alt="ibm punch card"></p> <p>provozoval jsem systém s nejlepší částí z tisíce databází rozložených na více serverech. všechny byly identické struktury a byly synchronizovány s databází šablon, která byla na každém počítači.</p><p>to mi umožnilo migrovat databáze z jednoho db na druhý, pokud by se jeden příliš přetěžoval, a když se změnil klientský mix, mohl jsem na různých serverech vytvářet nové databáze, abych mohl načíst rovnováhu mezi servery. to byla největší výhoda, kterou jsem získal od systému, v tom, že jsem měl na několika samostatných serverech několik velkých kusů cínu, které prováděly více komplikovaných dotazů současně.</p><p>skvělá věc je, že můžete do konfigurace přidat servery svou vlastní rychlostí, protože každý server se začíná přetížit, přidat další do mixu, přenést některé dbs na nový server a skončit pěkně načíst vyváženou sadu serverů. opravdu pěkný a jednoduchý způsob, jak přidat měřítko do systému, kdykoli je to potřeba!</p><p>důvodem, proč jsem šel s tímto přístupem spíše než s jediným obrovským databázovým přístupem, byla naprostá velikost potenciální databáze, která by byla vytvořena ... každá z 1000 databází měla 200 tabulek a mnoho jednotlivých tabulek v každé z databáze obsahovaly mnoho stovek <strong>milionů</strong> řádků dat!</p><p>konfigurace jediné databáze by vyžadovala, aby určité tabulky (přibližně 8 z nich) měly více miliard řádků dat a celková velikost db by byla přes 10tb. podařilo se nám mít více serverů s 5tb úložiště raid 10, s mnoha databázemi na každém.</p><p>to bych udělal! doufám, že to pomůže vašemu rozhodování ... :)</p>