Nikdy jsem nepochopil, proc vratit program zpatky do RAM ze swapu trva o tolik dele nez ten program znova spustit (nebo i poprve spustit). Neboli mam pustene dva programy. Prvni je narocny, tak se druhy program presune do swapu. Prvni program skonci, tak chci prepnout na druhy program, zacne se nacitat zpatky ze swapu a trva to priserne dlouho. Trva to mnohem dele nez ten program pustim, klidne poprve po startu OS. Proc? Cekal bych ze nacit jiz hotovou strukturu nacteneho programu do RAM bude primocarejsi nez spustit program s celou jeho inicializaci.
Je to jen moje zkusenost, nedelal jsem zadna korektni mereni, ale setkavam se s tim celkem casto pro ruzne programy (hlavne kdyz prezenu nejaky parametr vypoctu, to pak zahltim RAM driv nez se nadeju).
Protoze kdyz poustite program, tak se viceme pouzije read-ahead, tj. vedome se skryje znamy neduh o pristupovych latencich.
Naproti tomu se ze swapu do RAM dostava kazda page nezavisle a velice sekvencne - az dojde k nutnosti pristoupit na odswapovanou stranku - tak se z disku nacte, pokracuje se v programu.. a on za chvili chce dalsi stranku - takze tam je neskutecne mnohokrat pruchod pres tu dlouhou latenci na disk.
Druhy problem je, ze spusteni programu vyzaduje par mega, desitek mega dat z disku - data/code segmenty z knihoven. Zatimco rozjety program ma naalokovano X stovek mega az jednotky giga pameti.. ktere mohli byt odswapovany.
Zkuste vynutit hugepages, a zjistit zda se nezlepsi rychlost.. pri prechodu z 4K na 2MB se znatelne snizi pocet otocek pres dlouhou latenci.
26. 1. 2026, 20:50 editováno autorem komentáře