Linux Plumbers konferencē Prāgā Meta inženieris Gregory Price parādīja saspiestas atmiņas sistēmu CRAM, kas tikai lasāmā testā sasniedza aptuveni 489 miljonus operāciju sekundē. ZRAM tajā pašā testā deva ap 1,1 miljonu. Starpība lasīšanā ir aptuveni 452 reizes.
CRAM nozīmē Compressed RAM. Atšķirībā no ZRAM un Zswap tā ļauj procesoram lasīt saspiestu atmiņu pa baitam vai kešrindai, bez atpakaļatspiešanas veselā lapā. Prezentācija notika 5. oktobrī. Lielākā daļa koda gabalu jau atrodas kodola pamatzarā, par ko ziņo Phoronix.
Kāpēc ZRAM un Zswap atduras
ZRAM un Zswap abi sēž uz mijmaiņas slāņa. Dati, kas reiz izstumti, pirms lasīšanas jāatspiež atpakaļ parastā atmiņā. Katra pieeja saspiestai lapai nozīmē lapas kļūdu (page fault) un pilnu dekompresiju. Lielām darbaslodzēm tas uzkrājas manāmā kavējumā.
CRAM to apiet ar aparatūras atbalstītu saspiešanu. Saspiešanu un atspiešanu veic pati iekārta, nevis centrālais procesors. Lasītājs saņem datus tieši, bez page fault uz katru pieeju. Tāpēc tikai lasāmiem datiem CRAM veiktspēja tuvojas neapstrādātas DRAM ātrumam.
CRAM izmanto privātu atmiņas mezglu
ZRAM izliekas par bloka ierīci. CRAM to nedara. Tā vietā saspiestā atmiņa parādās kā privāts NUMA mezgls, ielāpu kodā nosaukts N_MEMORY_PRIVATE. Kodols turpina lietot savu parasto atmiņas semantiku: lapu migrāciju, balonēšanu un LRU sarakstus. Tieši tā ir atšķirība no swap pieejas, kur lapa pazūd no atmiņas semantikas, tiklīdz to izstumj.
Mehānika ir samērā tieša. Kodols pazemina lapas uz privāto mezglu pa standarta LRU. Kad iekārta ziņo par spiedienu, lapas tiek atgūtas uz swap. Ierakstīšana ir uzmanīgāka. Lapas ir rakstaizsargātas, lai nepieļautu nebeidzamu rakstīšanu saspiestā atmiņā. Ieraksta kļūda pārceļ lapu atpakaļ uz parasto DRAM. Pilno gaitu Gregory Price apraksta RFC ielāpu sērijā.
Lasīšanai paredzētie dati darbojas tikpat ātri kā neapstrādāta DRAM. Ierakstīšanā CRAM ir krietni ātrāks par ZRAM, Zswap un parasto swap.
Praktiskā sekas ir vienkārša. Līdz šim saspiesta atmiņa Linux vidē nozīmēja kompromisu: vairāk ietilpības pret lēnāku piekļuvi. CRAM mēģina šo kompromisu noņemt lasīšanas pusē, jo lasīšanai saspiestā un parastā atmiņa uzvedas vienādi. Procesam nav jāzina, ka tā dati vispār ir saspiesti.
Ko nozīmē aparatūras saspiešana
ZRAM un Zswap saspiešanu dara centrālais procesors. Katrs saspiešanas un atspiešanas cikls patērē procesora laiku, kas citādi būtu pieejams lietotnēm. Lielā mērogā tas kļūst par izmaksu, ko grūti attaisnot.
CRAM šo darbu nodod atsevišķai iekārtai. Procesors redz atmiņas adresi un lasa no tās, bet saspiešanu aiz kulisēm veic kontrolieris. Tieši tāpēc lasīšana ir tik ātra: procesoram nav jāgaida programmatūras dekompresija. Tas arī skaidro, kāpēc CRAM ieguvums būs atkarīgs no konkrētās aparatūras, kas šādu saspiešanu atbalsta.
Skaitļi no Prāgas
Galvenais skaitlis ir 452 reizes. Tas nāk no tikai lasāma testa: aptuveni 489 miljoni operāciju sekundē pret ZRAM 1,1 miljonu. Pats skaitlis attiecas uz lasīšanu, nevis uz vispārēju sniegumu.
Rakstīšanas ieguvums ir mazāks. Tur CRAM joprojām pārspēj ZRAM un Zswap, tāpat arī parasto swap. Tom’s Hardware un citi avoti brīdina skatīt aparatūras saspiešanas sniegumu atsevišķi no atmiņas pārvaldības izmaksām, ko kodols joprojām sedz. Ar citu aparatūru vai citu darbaslodzi skaitlis būs cits.
Kas jau ir kodolā
Daudzi CRAM gabali jau ir pamatzarā. Pilno kopu Price publicēja kā RFC ielāpu sēriju. Pēdējā publiskā versija ir v4 ar 27 ielāpiem. Autors cer, ka viss tiks iekļauts tuvākajā laikā. Pašlaik CRAM nav gatava funkcija parastam lietotājam. Tā ir pārbaudīta implementācija, kas gaida kodola apskati.
Konteksts ir atmiņas cena. 2026. gadā RAM moduļu cenas ir augstas un pieprasījums pēc ietilpības aug. Sistēma, kas ļauj lasīt saspiestu atmiņu bez soda par katru pieeju, dod serveriem vairāk izmantojamas ietilpības no tās pašas aparatūras. Datu centram tas nozīmē vairāk ietilpjošu procesu uz vienas iekārtas. Meta šo problēmu jūt tieši, jo uztur ļoti lielu serveru parku, kur katra ietaupītā procentuālā daļa atmiņas pārvēršas reālā aparatūras rēķinā.
Parastam galddatora lietotājam CRAM pagaidām neko nemaina. ZRAM uz klēpjdatora turpinās darboties kā līdz šim. Ieguvums vispirms nonāks pie tiem, kam ir saderīga aparatūra un liela atmiņas slodze, tas ir, pie serveriem un datu centriem.
Atlikušais jautājums ir aparatūra. CRAM balstās uz iekārtu, kas prot saspiest un atspiest atmiņu bez centrālā procesora, tāpēc ieguvums būs atkarīgs no tā, cik plaši šāda aparatūra būs pieejama. Nākamais kodola laidiens 7.3 ir plānots dažu dienu laikā, tomēr pilnā CRAM kopa tajā vēl neiekļausies.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.