Zkratka proRandom Access Memoryram, případně po písmenech er ej emTakéRAMka, hlavní paměť, systémová paměťZákladní

Definice

RAM je rychlá pracovní paměť počítače, do které procesor ukládá data a instrukce právě běžících programů. Na rozdíl od disku ztrácí obsah po vypnutí napájení, ale nabízí výrazně kratší přístupové časy. Množství RAM ovlivňuje, kolik aplikací a dat lze zpracovávat bez zpomalení swapováním.

Kategorie: Počítačová architekturaAktualizováno

Proč je RAM rychlejší než disk

RAM ukládá bity v paměťových buňkách, ke kterým procesor přistupuje přes adresy. Slovo random neznamená náhodný obsah, ale možnost číst různé adresy bez mechanického hledání nebo postupného procházení. Pevný disk, SSD i síťové úložiště jsou typicky trvalejší, ale pro práci procesoru pomalejší.

Program za běhu nemění přímo soubor na disku při každé operaci. Operační systém načte potřebné části programu, knihoven a dat do RAM, kde s nimi CPU pracuje. Část RAM využívá také cache souborového systému, grafické prostředí, prohlížeč, databáze, virtuální stroje a kontejnery. Proto se „volná RAM“ v moderním systému nemá číst příliš doslova: systém může paměť využívat jako vyrovnávací prostor a při potřebě ji uvolnit.

Co se stane při nedostatku RAM

Nedostatek RAM se neprojeví jen tím, že aplikace nejde spustit. Operační systém může přesouvat méně používané stránky paměti do swapu nebo stránkovacího souboru. Program pak dál běží, ale každé vrácení těchto dat z pomalejšího úložiště přidává čekání. U interaktivního počítače to vypadá jako zamrzání, u serveru jako dlouhá odezva a propad propustnosti.

Proces také může narazit na limit paměti. V Linuxu může zasáhnout OOM killer a ukončit některý proces. V kontejneru může aplikace spadnout i na stroji, který má fyzicky volné gigabajty, protože kontejner dostal vlastní paměťový strop. U managed jazyků, například JavaScriptu, Javy nebo Pythonu, se do výsledku promítá i správa haldy a garbage collector.

Dva praktické dopady velikosti RAM

  1. Analytický skript načte příliš velký soubor. Datový tým spustí lokální skript, který místo postupného čtení načte celý export do seznamu objektů. Po překročení dostupné RAM začne systém intenzivně swapovat a výpočet se z minut protáhne na hodiny. Bezpečnější je zpracování po blocích nebo použití databáze či nástroje, který umí streamovat.
    data = [b"x" * 1024 * 1024 for _ in range(800)]
    print(len(data))
  2. Webová aplikace v kontejneru dostane nízký limit. API běží v Kubernetes s limitem 512 MB, zatímco při špičce drží velkou cache a více paralelních requestů. Kontejner je ukončen kvůli paměti, ačkoliv fyzický server má rezervu. Řešením může být menší cache, backpressure, vyšší limit nebo přesun sdíleného stavu do Redis.

Parametry RAM, které vývojáře opravdu zajímají

Kapacita říká, kolik dat může systém držet blízko procesoru. Latence říká, jak dlouho trvá první přístup k určité adrese. Propustnost říká, kolik dat lze přenést za jednotku času. U běžného programování bývá nejviditelnější kapacita, protože nedostatek vede ke swapování nebo pádům. U grafiky, vědeckých výpočtů a databází může být důležitá i propustnost a lokalita přístupu.

RAM není totéž co úložiště a není ani totéž co cache procesoru. CPU cache je menší a ještě rychlejší vrstva přímo u procesoru. RAM je větší pracovní prostor sdílený operačním systémem a programy. Disk nebo SSD drží data dlouhodobě, i po vypnutí napájení.

Příklady z praxe

  1. Analýza velkého exportu na slabším notebooku

    Datový analytik v logistické firmě spouštěl na notebooku s 8 GB RAM skript, který načítal celý měsíční export zásilek do paměti najednou. Po několika minutách začal systém swapovat na SSD a výpočet se místo obvyklých desítek minut protáhl na několik hodin. Úprava skriptu na zpracování souboru po blocích snížila špičkovou spotřebu paměti a výpočet doběhl stabilně bez zpomalení.

  2. Pády webové služby kvůli limitu paměti

    Provozní tým e-shopu řešil opakované pády aplikačního kontejneru během večerní špičky. Java služba měla v Kubernetes limit 768 MB RAM, ale při větším počtu paralelních objednávek držela v paměti příliš mnoho objektů a kontejner byl ukončen kvůli překročení limitu. Zmenšení lokální cache, nastavení limitu haldy JVM a navýšení paměťového limitu odstranily restarty a zkrátily odezvu API.

Časté omyly

MýtusČím víc RAM, tím bude počítač vždycky rychlejší.
Ve skutečnostiVětší RAM pomáhá hlavně při nedostatku kapacity. Pokud aplikace neswapuje a má dost pracovní paměti, výkon může omezovat procesor, disk, síť nebo algoritmus.
MýtusVolná RAM je nejlepší RAM.
Ve skutečnostiModerní operační systém může nevyužitou paměť použít jako cache pro soubory a zrychlit opakovaný přístup k datům. Důležitější než samotné číslo volné paměti je tlak na paměť, swapování a odezva systému.
MýtusRAM a SSD jsou v podstatě totéž, jen SSD je větší.
Ve skutečnostiRAM je volatilní pracovní paměť s velmi rychlým přístupem pro běžící programy. SSD je nevolatilní úložiště, které drží data dlouhodobě, ale pro přímou práci procesoru je výrazně pomalejší.

Časté dotazy

Zrychlí větší RAM vždy celý počítač?
RAM obvykle zrychlí počítač tehdy, když současná kapacita nestačí a systém začne swapovat na disk nebo SSD. Přidání paměti ale nepomůže úlohám, které brzdí hlavně pomalý procesor, síť, databázový dotaz nebo samotné úložiště. Praktické vodítko je sledovat využití paměti, aktivitu swapu a počet pádů kvůli paměťovým limitům při reálné práci, ne jen při nečinnosti systému.
Zůstávají data v RAM po vypnutí počítače?
RAM se po vypnutí napájení běžně vymaže, protože jde o volatilní pracovní paměť. Trvalé uložení zajišťuje SSD, pevný disk nebo jiné nevolatilní médium. Hibernace počítače funguje tak, že operační systém zapíše obraz paměti na úložiště a při dalším startu ho znovu načte. Samotná RAM tím nezískává trvalost, pouze se její obsah dočasně uloží jinam.
Kdy se u RAM řeší rozdíl mezi RAM a VRAM?
RAM v běžném notebooku nebo serveru slouží jako hlavní paměť pro procesor a operační systém. VRAM je paměť grafické karty určená hlavně pro textury, framebuffery, geometrická data a výpočty na GPU. Integrované grafiky často sdílejí část systémové RAM, zatímco samostatné grafické karty mívají vlastní rychlou paměť. Nedostatek VRAM brzdí hlavně grafické a GPU výpočty, ne nutně běžnou práci CPU.
Proč aplikace v kontejneru spadne na paměti, když server má RAM volnou?
RAM v kontejneru je omezená limitem, který nastaví platforma, například Docker nebo Kubernetes. Aplikace může spadnout kvůli překročení limitu, i když hostitelský server ještě není celkově zaplněný. Provozní metriky proto musí rozlišovat fyzickou paměť uzlu, limit konkrétního kontejneru, skutečné využití procesu a případný swap. Bez tohoto rozlišení se špatně hledá příčina restartů.

Zdroje

  1. Random-access memory(otevře se v novém okně)Wikipedia
  2. Memory Management(otevře se v novém okně)Microsoft Learn
  3. Memory Management(otevře se v novém okně)The Linux Kernel documentation

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.