Linux nüvəsində keş keşinin idarə edilməsi 2.4. Linux-da Swappiness və keşləşdirmənin qurulması

Linux nüvəsi elə qurulmuşdur ki, əməliyyat sisteminin yaddaşı sistemin işini maksimum dərəcədə artırmaq üçün istifadə olunur. Və burada iki xatirəni müqayisə etməyə dəyər: yavaş və sürətli - RAM və sərt yaddaş disk (SSD disk). RAM-a oxuma/yazma sürəti daxil olma sürətindən xeyli yüksəkdir sərt disk. Bu o deməkdir ki, çox elementar bir nəticə çıxır: ondan oxumaq daha yaxşıdır təsadüfi giriş yaddaşı, ilə eyni fayldan daha çox sərt disk. Lakin operativ yaddaşın məhdud miqdarını nəzərə alsaq, hər şeyi RAM-da saxlamaq mümkün deyil, çünki RAM-ın əsas məqsədi proqramlarla işləməkdir.

Linux (CentOS) RAM-dan necə istifadə edir

Kompüter işə salındıqdan sonra tələb olunan bütün faylları RAM-a yaddaşda saxlayan Linux (CentOS) dizaynına qayıdaq. Bu, CentOS fayl keşi adlanır və Linux-un bütün RAM-ı yeməsi ilə bağlı bütün qışqırıqların və lənətlərin arxasında duran əsas günahkardır. Əlbəttə ki, RAM dolduqda, az istifadə olunan fayllar atılacaq və yeni fayllarla üzərinə yazılacaq, həmçinin fayl önbelleği proqramların tələb etdiyi ölçüdə boşaldılacaq. Vəziyyətin hərtərəfli təhlili üçün serverimdən topun çıxışı budur:

Son iki sətirlə maraqlanacağıq. Xətt Mem: RAM istifadəsini göstərir. İmza ilə ilk dəyər ümumi 2 GB RAM-a malik sistemin istifadə edildiyini göstərir. Sonra postscript ilə 500+ MB dəyər gəlir istifadə, yaddaşın nə qədər yer tutduğunu göstərir Bu an. Bundan sonra postscript ilə dəyər gəlir pulsuz, bu, boş yaddaşı göstərir. Əlavə postscript tamponlar- tamponlarla və ya bir şeylə əlaqəli bir şey (bu məqalədə hələ ciddi bir yük deyil). Ən maraqlısı isə postscript ilə son sətirdən son nöqtədir keşlənmişdir— yuxarıda müzakirə edilən fayl keşi üçün nə qədər yaddaş istifadə olunduğunu göstərir.

Yuxarıdakı ekrana əsasən, RAM-ın 530 MB dolu olduğu və sonrakı istifadə üçün yalnız 1,4 GB yaddaşın olduğu ortaya çıxdı (Yuxarıdakı ekran bir neçə saat kompüterdən sonra fayl keşinin gözəlliyini çox yaxşı təsvir etmir əməliyyat RAM 90-95 faiz doludur Budur, kompüteri işə saldıqdan bir neçə dəqiqə sonra işin ekran görüntüsü).

Bununla belə, əslində 1,65 GB yaddaş pulsuzdur, bu, boş yaddaş və keş yaddaşı birlikdə əlavə etsəniz çıxır. Bu, bəzi proqramlar və ya sistemin özünə ehtiyac duyarsa, CentOS fayl keşinin RAM-ın işğal edilmiş yerlərini ayıracağına görə doğrudur. Beləliklə, proqramlar və OS (hazırda) üçün daha 250 MB ayrıla bilər ki, bu da hazırda fayl keşi üçün istifadə olunur.

Buna görə də, boş sahədə həyəcan verici dərəcədə kiçik dəyərlər gördüyünüz zaman buna önbelleğe alınmış sahənin dəyərini əlavə etməyi unutmayın. Sonra alacaqsınız pulsuz RAM-in ümumi miqdarı. Bütün bunlara əsaslanaraq, ümumiyyətlə Linux (CentOS) əməliyyatında hər hansı bir dəyişiklikdən imtina edə bilərsiniz, çünki ƏS-nin hərəkətləri çox aqressiv deyil və tətbiqləriniz üçün çox lazım olan RAM həmişə mövcud olacaqdır.

Çox böyük fayl keşi ilə bağlı problemlər

Bununla belə, öz təcrübəmdən deyəcəyəm ki, ümumi RAM-ın 90-95% -dən çoxu proqramlarla birlikdə fayl keşi üçün ayrıldıqda, bütün sistemin sonrakı fəaliyyəti bir qədər yavaşlayır. Veb serveri qurduğum üçün burada ən yaxşı göstərici RAM demək olar ki, tamamilə dolduqda axsamağa başlayan saytların performansıdır. Bundan əlavə, RAM dolduqda mərkəzi prosessorun işinin artdığı, RAM-dan nəyin atılacağına və oraya nə əlavə ediləcəyinə daim qərar verdiyi müşahidə edilmişdir. Buna görə qərar verildi CentOS fayl keşinin maksimum ölçüsünü məhdudlaşdırın.

CentOS fayl keşinin təmizlənməsi

Bu istiqamətdə bir çox insanlar fayl önbelleğini əl ilə təmizləməyi və bu prosesi avtomatlaşdırmaq üçün gündə bir dəfə və ya bir neçə saatda bir dəfə cron-a tapşırıq yazın və işə salın. Daha dolğun bir şəkil üçün bu əmrdir:

sh -c ‘echo 1 > /proc/sys/vm/drop_caches"

Komanda həqiqətən öz işini görür və fayl keşi tamamilə təmizlənir. Ancaq dərhal yenidən doldurulmağa başlayır və tezliklə hər şeyi yenidən dolduracaq pulsuz yer diskdə. Ancaq başqa bir həll yolu var.

Fayl keş ölçüsü limiti

Bunu etmək üçün fayldakı dəyəri dəyişdirməliyik /proc/sys/vm/min_free_kbytes fayl keşi üçün ayrılmasını istəmədiyiniz dəyərə. Başqa sözlə, KB-də göstərdiyiniz RAM ölçüsü həmişə boş qalacaq, fayl keşi tərəfindən tutulmayacaq. Düzünü desəm, bu parametrin necə işlədiyini dəqiq deyən daha konkret material tapmadım:

  1. Ümumi RAM miqdarına əsasən proqramlar və sistem üçün göstərilən məbləği tərk edirmi? və ya
  2. Pulsuz RAM-a əsaslanan proqramlar və sistem üçün göstərilən məbləği tərk edirmi?

Mən özüm ikinci seçimə meylliyəm, çünki standart olaraq fayl keşi tətbiqlərdən daha aşağı prioritetə ​​malikdir və buna görə də tələb olunduqda işğal olunmuş ərazilərdən imtina edir.

Amma qayıdaq fayla, mənim dəyərini 700000, yəni 700 MB olaraq təyin etdim. Dəyişiklikdən dərhal sonra siz artıq dəyişiklikləri görəcəksiniz, çünki fayl keşi yeni tələblərə uyğunlaşmaq üçün kifayət qədər təmizlənəcək. Ancaq bu vəziyyət yalnız növbəti yenidən işə salınana qədər davam edəcək və buna görə də hərəkətlərimizi birləşdirməliyik. Bunu etmək üçün fayla /etc/sysctl.conf xətt əlavə edin

vm.min_free_kbytes=700000

Təbii ki, burada öz dəyərinizi qeyd etməlisiniz. Faylı yenidən başladıb yoxlaya bilərsiniz /proc/sys/vm/min_free_kbytes dəyəri standart dəyərə dəyişməməlidir.

Fayl keşinin ehtiyacları üçün RAM-da ayrıla bilən maksimum ölçüsü belə məhdudlaşdıra bilərsiniz.


Hər birində Linux paylanması Linux yaddaş keşini təmizləmək üçün üç əmrdən istifadə edə bilərsiniz. Üstəlik, heç bir prosesi başa çatdırmaq məcburiyyətində deyilik. Bunlar əmrlərdir:

PageCache təmizlənməsi:
#sinxronizasiya; echo 1 > /proc/sys/vm/drop_caches
İnod və dişlərin təmizlənməsi:
#sinxronizasiya; echo 2 > /proc/sys/vm/drop_caches
İnodun və dentrinin və PageCache-nin təmizlənməsi:
#sinxronizasiya; echo 3 > /proc/sys/vm/drop_caches
Bu əmrlərdən hər hansı birini yerinə yetirməzdən əvvəl aşağıdakıları yerinə yetirin:
$su -
Bu lazımdır, çünki hər bir əmr işləmək üçün super istifadəçi hüquqlarını tələb edir. İndi bu əmrlər yerinə yetirildikdə nə baş verdiyinə baxaq.

Utility sinxronizasiya Sistemin bütün keşlənmiş, lakin hələ yazılmamış məlumatları diskə yazmasına səbəb olur. Bu, mümkün qədər çox yaddaş boşaltmaq üçün lazımdır. Varsayılan olaraq, məlumat diskə yazıldıqdan sonra keşdən silinmir, bu, proqramın lazım olduqda onu daha sürətli oxuya bilməsi üçün lazımdır;

Əgər əmr yerinə yetirilmirsə sinxronizasiya Biz də bir az yer boşaldacağıq, amma bunu etdikdən sonra nəticə daha yaxşı olacaq.

Bölünmə simvolu; qabığa başqa bir əmri yerinə yetirməzdən əvvəl birinci əmr tamamlanana qədər gözləməyi əmr edir. Son əmr echo 1 > /proc/sys/vm/drop_caches fayla 1 dəyəri yazır /proc/sys/vm/drop_caches. Bu, nüvəyə siqnal verir ki, seçdiyimiz keşin növünü təmizləməliyik.

Linux-da keşin növləri

İndi bu əmrləri təmizləməyə imkan verən keşlərin növlərinə və bunların hamısının necə işlədiyinə baxaq.

PageCache və ya səhifə keşi nüvənin diskə yazdığınız və ya diskdən oxuduğunuz bütün məlumatları yerləşdirdiyi yerdir. Bu, sistemi çox sürətləndirir, çünki proqrama ikinci dəfə eyni məlumat lazımdırsa, o, sadəcə RAM-dən götürüləcəkdir. Ancaq bu səbəbdən bu keş ən çox yer tutur.

Pulsuz yardım proqramından istifadə edərək səhifənin önbelleğinin ölçüsünü görə bilərsiniz. Burada sonuncu sütunda göstərilir - keşlənmişdir:
$ pulsuz -h

Bu tip keş ən səmərəli və ən təhlükəsizdir.

İnod və dentri keş də fayl sisteminə aiddir. Yalnız ona verilənlərin özü deyil, fayl sisteminin strukturu, fayl və qovluqların yeri yazılır. Faylın yerini və ya qovluğun məzmununu soruşduqda, nüvə bütün bu məlumatları ehtiva edən xüsusi strukturlar yaradır. Növbəti dəfə sorğu verildikdə, strukturlar artıq yaddaşda saxlanılacaq. Hər bir fayl sisteminin öz inode keşi və paylaşılan dentrie keşi var.

Bu keş çox az yaddaş tutur. Məlumatlar baytlarla təqdim olunur və gördüyünüz kimi, çox kiçikdir. Buna əmrlə baxa bilərsiniz:
$ cat /proc/slabinfo | egrep dentry\|inode

Linux yaddaşını boşaltmaq üçün onu təmizləmək tövsiyə edilmir, çünki az yaddaş sərf olunur və fayl sisteminin yeni skan edilməsi nisbətən uzun vaxt aparır.

Mən ümumiyyətlə keşi təmizləməliyəm?
Birincisi, istifadə olunan çoxlu yaddaş varsa, xüsusilə də çox yaddaş tutan səhifə keşidirsə, səhifə keşini təmizləmək istəyə bilərsiniz. İkincisi, hər hansı bir fayl sistemini və ya nüvə parametrlərini dəyişdirmisinizsə və indi bunun oxu/yazma əməliyyatlarının sürətinə necə təsir etdiyini yoxlamaq istəyirsinizsə, Linux yaddaş keşini təmizləməli ola bilərsiniz. Bu halda, bütün önbellekləri təmizləyə və onu yenidən yükləmədən edə bilərsiniz, bu çox rahatdır.

Linux əməliyyat sistemi elə qurulmuşdur ki, diskə daxil olmamışdan əvvəl diskin keş yaddaşına baxılacaq və lazımi məlumatlar varsa, diskə daxil olmaq mümkün olmayacaq. Linux önbelleğini təmizləsəniz əməliyyat sistemi bir az yavaş olacaq, çünki diskdəki məlumatları axtarmaq məcburiyyətində qalacaq.

Avtomatik önbelleğin təmizlənməsi

Gəlin cron iş planlayıcısından istifadə edərək hər gün səhər saat ikidə yaddaş keşini avtomatik olaraq necə təmizləməyə baxaq.

Əvvəlcə aşağıdakı məzmunlu bir bash skripti yaradaq:
$ sudo vi /usr/local/bin/clearcache.sh
#!/bin/bash sinxronizasiyası; echo 1 > /proc/sys/vm/drop_caches
Biz yalnız səhifə keşini təmizləyəcəyik, çünki o, ən çox yer tutur. Sistemin işini lazımsız şəkildə azaltmamaq üçün digər növlərə toxunmayacağıq.

Sonra, skripti icra edilə bilən hala gətirin:
$ sudo chmod 755 /usr/local/bin/clearcache.sh
Qalan tək şey tapşırığı cron planlaşdırıcısına əlavə etməkdir. Bunu etmək üçün əmri işlədin:
$ sudo crontab -e
Və açılan redaktorda sətri əlavə edin:
0 2 * * * /usr/local/bin/clearcache.sh
İndi bu skript hər gecə işləyəcək və serverin normal işləməsi üçün yaddaşı təmizləyəcək.

Yaddaş keşinin ölçüsünün təyin edilməsi

Hər dəfə önbelleği təmizləmək deyil, limit təyin etmək daha rahatdır, aşıldıqda sistem özü lazımsız səhifələri siləcəkdir. Sistemin keş üçün neçə meqabayt istifadə edə biləcəyini açıq şəkildə məhdudlaşdıra bilməzsiniz. Lazım olduqda bütün mövcud yaddaş istifadə olunacaq, lakin vaxtı keçmiş səhifələrin keşdən silinmə sürəti tənzimlənə bilər.

Fayl bunun üçün məsuliyyət daşıyır. Bu, səhifələri keşdən nə qədər aqressiv silməyinizlə bağlı nisbi ölçüdən ibarətdir. Varsayılan olaraq, parametr 100-ə təyin edilmişdir. Əgər onu azaltsanız, kernel səhifələri daha az siləcək və bu, önbelleğin çox sürətli artmasına səbəb olacaq. Sıfıra təyin edilərsə, səhifələr ümumiyyətlə silinməyəcək. Əgər dəyər 100-dən çox olarsa, keş ölçüsü daha yavaş böyüyəcək və istifadə olunmamış səhifələr dərhal silinəcək.

Məsələn, minimum keş ölçüsünü edək:
# echo 1000 > /proc/sys/vm/vfs_cache_pressure
Unutmayın ki, bu, sisteminizin performansını əhəmiyyətli dərəcədə azaldacaq, çünki məlumatlar keş əvəzinə diskdən oxunacaq.

Mübadilə yaddaşını necə təmizləmək olar

Mübadilə yerini təmizləmək çox asandır. Bunu etmək üçün çalıştırın:
# swapoff -a && swapon -a
Nəzərə alın ki, mübadiləni təmizləyərkən bütün məlumatlar yenidən RAM-a köçürüləcək.

Gəlin Ubuntu-nun RAM istifadəsi və dəyişdirilməsi ilə bağlı davranışını dəyişdirək (mübadilə bölməsi). Defolt dəyəri 60 olan vm.swappiness adlı parametr var və səhifələrin dəyişdirmə bölməsinə aktiv dempinqinin başlayacağı boş yaddaş faizinə nəzarət edir. Başqa sözlə desək, 100-60=40% işğal edilmiş yaddaşda Ubuntu artıq dəyişdirmə bölməsindən istifadə etməyə başlayacaq. Əgər kompüterdə çoxlu RAM varsa, vm.swappiness parametrini 10-a dəyişmək və bununla da Ubuntuya demək lazımdır ki, istifadə olunan RAM 100-10=90%-ə çatana qədər svopdan istifadə etməsin. Dəyəri 60 əvəzinə 10 təyin edək. Konsolda aşağıdakı əmri daxil edin:

Echo 10 > /proc/sys/vm/swappiness

Sysctl -w vm.swappiness=10

Yenidən başladıqdan sonra parametri saxlamaq üçün /etc/sysctl.conf faylının sonuna aşağıdakı sətri əlavə edin:

Vm.swappiness=10

Parametrləri dərhal tətbiq etmək üçün:

Sysctl -səh

Bundan əlavə, daha bir neçə parametr haqqında danışa bilərik.
Pseudo-fayl vfs_cache_pressure dəyəri saxlayır - keş üçün ayrılmış yaddaş səviyyəsi. Defolt dəyər: 100. Bu parametrin artırılması nüvənin istifadə olunmamış yaddaş səhifələrini keşdən daha aktiv şəkildə boşaltmasına səbəb olur, yəni. Önbelleğe ayrılan RAM miqdarı daha yavaş artacaq və bu da öz növbəsində dəyişdirmə bölməsindən istifadə ehtimalını azaldacaq. Bu parametri azaltmaqla, nüvə, əksinə, yaddaş səhifələrini keşdə, o cümlədən dəyişdirmədə daha uzun müddət saxlayacaq, bu, az miqdarda RAM olduqda, məsələn, 512 MB yaddaşımız varsa, o zaman məna kəsb edir. vfs_cache_pressure parametri 50-yə təyin edilə bilər. Bu, dəyişdirmə bölməsində disk əməliyyatlarının sayını azaldacaq, beləliklə, istifadə olunmamış səhifələrin silinməsi daha az baş verəcəkdir.
Sistemi sürətləndirmək istəyirsinizsə və kifayət qədər RAM (2 GB və ya daha çox) varsa, sistem dəyərini belə dəyişdirin: dəyişdirmə = 10, vfs_cache_pressure = 1000 (standart 100), /etc/sysctl-ə aşağıdakı sətri əlavə edin. .conf faylı:

Vm.vfs_cache_pressure=1000

və ya tez:

Sysctl -w vm.vfs_cache_pressure=1000

Linux-da keşləmə

Məlumat diskə yazıldıqda (hər hansı bir proqramla) Linux bu məlumatı Səhifə Keşi adlı yaddaş sahəsində keşləyir. Bu yaddaş sahəsi haqqında məlumat istifadə edərək baxıla bilər pulsuz əmrlər, vmstat və ya yuxarı. Tam məlumat Bu yaddaş sahəsi haqqında /proc/meminfo faylında baxa bilərsiniz. Aşağıda 4 GB RAM olan bir serverdə bu faylın nümunəsi verilmişdir:

MemCəmi: 3950112 kB
MemFree: 622560 kB
Buferlər: 78048 kB
Keşlənmiş: 2901484 kB
SwapCached: 0 kB
Aktiv: 3108012 kB
Qeyri-aktiv: 55296 kB
Yüksək Ümumi: 0 kB
Yüksək Pulsuz: 0 kB
Aşağı Ümumi: 3950112 kB
LowFree: 622560 kB
Mübadilə Cəmi: 4198272 kB
SwapFree: 4198244 kB
Çirkli: 416 kB
Geriyə yazı: 0 kB
Xəritələnmiş: 999852 kB
Plitə: 57104 kB
Təhlükəli_AS: 3340368 kB
Səhifə Cədvəlləri: 6672 kB
VmallocTotal: 536870911 kB
Vmalloc İstifadə olunan: 35300 kB
VmallocChunk: 536835611 kB
Böyük Səhifələr_Cəmi: 0
Böyük Səhifələr_Pulsuz: 0
Böyük səhifə ölçüsü: 2048 kB

Səhifə Keşi ölçüsü "Keşlənmiş" parametrində göstərilir bu misalda 2.9 GB-dır. Səhifələr yaddaşa yazıldıqca "Çirkli" parametrinin ölçüsü artır. Diskə yazmağa başladığınızda, "Geriyə yazma" parametri qeyd bitənə qədər artacaq. "Geriyə yazma" parametrini yüksək görmək olduqca çətindir, çünki onun dəyəri yalnız sorğu zamanı, giriş/çıxış (I/O) əməliyyatları növbəyə qoyulduqda, lakin hələ diskə yazılmayanda artır.
Linux adətən pdflush prosesindən istifadə edərək keş məlumatlarını diskə yazır. İstənilən anda sistemdə 2-dən 8-ə qədər pdflush mövzuları işləyir. /proc/sys/vm/nr_pdflush_threads faylında hazırda neçə mövzunun aktiv olduğunu görə bilərsiniz. Hər dəfə bütün mövcud pdflush mövzuları ən azı 1 saniyə məşğul olur. Yeni başlıqlar məlumatı pulsuz cihaz növbələrinə yazmağa çalışır ki, hər bir aktiv cihaz üçün keşdən 1 başlıq yuyulma məlumatı olsun. Hər saniyə pdflush-dan heç bir fəaliyyət olmadan keçəndə 1 mövzu silinir. Linux-da siz pdflush mövzularının minimum və maksimum sayını konfiqurasiya edə bilərsiniz.

Pdflush qurulması
Hər bir pdflush ipi /proc/sys/vm-də bir neçə parametrlə idarə olunur:

  • /proc/sys/vm/dirty_writeback_centisecs (standart 500): saniyənin yüzdə biri ilə. Bu parametr pdflush-un diskə məlumat yazmağa nə qədər tez-tez davam etdiyini göstərir. Varsayılan olaraq, hər 5 saniyədən bir 2 başlıq davam etdirilir.
    Pdflush prosesinin məlumatları daha aqressiv şəkildə önbelleğe almasına imkan vermək üçün dirty_writeback_centisecs-i azaltmaq cəhdlərinin qarşısını alan sənədsiz davranış ola bilər. Məsələn, 2.6 Linux nüvəsinin ilkin versiyalarında mm/page-writeback.c faylında "disk yazmaları dirty_writeback_centisecs parametrindən daha uzun çəkirsə, onda intervalı 1 saniyəyə təyin edin" deyən məntiqi ehtiva edirdi. Bu məntiq yalnız nüvə kodunda təsvir olunur və onun işləməsi Linux nüvəsinin versiyasından asılıdır. Bu çox yaxşı olmadığı üçün siz bu parametri azaltmaqdan qorunacaqsınız.
  • code>/proc/sys/vm/dirty_expire_centiseconds (standart 3000): saniyənin yüzdə biri ilə. Bu parametr verilənlərin diskə yazılmadan əvvəl keşdə nə qədər qala biləcəyini müəyyənləşdirir. Varsayılan dəyər çox uzundur: 30 saniyə. Bu o deməkdir ki, nə vaxt normal əməliyyat Başqa bir pdflush metoduna zəng etmək üçün keş yaddaşa kifayət qədər məlumat yazılana qədər Linux keşdə 30 saniyədən az olan diskə məlumat yazmayacaq.
  • /proc/sys/vm/dirty_background_ratio (standart 10): Məlumat diskə yazılmazdan əvvəl səhifə keşi tərəfindən doldurula bilən maksimum RAM faizi. Linux nüvəsinin bəzi versiyaları bu parametri 5%-ə təyin edə bilər.
    Əksər sənədlər bu parametri ümumi RAM-in faizi kimi təsvir edir, lakin uyğun olaraq mənbə kodları Linux nüvəsi deyil. Meminfo-ya baxsaq, dirty_background_ratio parametri MemFree + Cached - Mapped dəyərindən hesablanır. Beləliklə, demo sistemimiz üçün 10% 250MB-dan bir qədər azdır, lakin 400MB deyil.

pdflush nə vaxt yazmağa başlayır?
Standart konfiqurasiyada diskə yazılan məlumatlar yaddaşda qalana qədər qalır:

Serverdə yazma əməliyyatları tez-tez baş verirsə, o zaman bir gün dirty_background_ratio parametrinə çatacaq və siz dirty_expire_centiseconds parametrinin bitməsini gözləmədən diskə yazılan bütün yazıların yalnız bu parametrdən keçdiyini görə biləcəksiniz.

Səhifə yazma prosesi
Parametr /proc/sys/vm/dirty_ratio (standart 40) pdflush diskə məlumat yazmazdan əvvəl səhifə keşinə ayrıla bilən ümumi RAM-ın maksimum faizidir.

Qeyd: Diskə yazarkən, yalnız yazma buferini dolduran deyil, bütün yazma prosesləri bloklanır. Bu, bir prosesin sistemdəki bütün I/O əməliyyatlarını bloklamasına səbəb ola bilər.

Yazma intensivliyi olan əməliyyatlar üçün Linux-u optimallaşdırmaq üçün ən yaxşı təcrübələr
Adətən, disk alt sisteminin məhsuldarlığını artırmağa çalışarkən, Linux-un bir anda çox məlumat bufer etməsi problemi ilə qarşılaşırlar. Bu, fsync zənglərindən istifadə edərək fayl sisteminin sinxronizasiyasını tələb edən əməliyyatlar üçün xüsusilə nəzərə çarpır. Əgər belə bir zəng zamanı keşdə çoxlu məlumat varsa, o zaman bu zəng bitənə qədər sistem dondurula bilər.
Başqa bir ümumi problem, fiziki diskə yazmağa başlamazdan əvvəl çox şey yazmaq lazımdır, çünki I/O əməliyyatları normal əməliyyatdan daha tez-tez baş verir.

  • dirty_background_ratio: Əsas tənzimləmə aləti. Adətən bu parametr azaldılır. Məqsədiniz keş yaddaşda saxlanılan məlumatların həcmini azaltmaqdırsa, beləliklə, verilənlərin hamısı birdən yox, tədricən diskə yazılsın, onda bu parametrin azaldılması ən təsirli yoldur. Varsayılan dəyər çoxlu RAM və yavaş diskləri olan sistemlər üçün ən uyğundur.
  • dirty_ratio: Konfiqurasiya ediləcək ikinci ən vacib parametr. Bu parametr əhəmiyyətli dərəcədə azaldılsa, diskə yazmalı olan proqramlar birlikdə bloklanacaq.
  • dirty_expire_centisecs: Bu parametri azaltmağa çalışın, lakin çox deyil. Bu, diskə yazılmazdan əvvəl səhifələrin keşdə sərf etdiyi vaxtı azaltmağa imkan verir, lakin digər tərəfdən bu, diskə orta yazma sürətini əhəmiyyətli dərəcədə azaldacaq ki, bu da yavaş diskləri olan sistemlərdə xüsusilə nəzərə çarpacaq.

Nəticədə alırıq
/etc/sysctl.conf faylına əlavə edirik:

Vm.dirty_background_ratio = 10 vm.dirty_racio = 40

Sonra önbelleği və disk məlumatlarını sinxronlaşdırırıq, keşi təmizləyirik və parametrləri saxlayırıq:

Sinxronizasiya; echo 3 > /proc/sys/vm/drop_caches; sysctl -s

Disk yazma yekunlaşdırmalarının sayını azaltmaq üçün aşağıdakıları tənzimləməlisiniz:

Vm.dirty_writeback_centisecs = 15000

Performansın optimallaşdırılmasına gəldikdə Linux sistemləri, fiziki yaddaş ən vacib amildir. Təbii ki, Linux qiymətli yaddaş resurslarının istifadəsinə nəzarət etmək üçün bir çox variant təklif edir. Fərqli alətlər monitorinq qranularlığı (məsələn, sistem miqyasında, hər bir proses, hər istifadəçi), interfeys (məsələn, qrafik, komanda xətti, ncurses) və ya iş rejimi (məsələn, interaktiv, toplu rejim).

Budur proqramların qismən siyahısı qrafik interfeys Linux platformalarında istifadə olunan və boş yaddaşı yoxlamaq üçün seçim etmək üçün çoxlu seçiminiz var.

1. /proc/meminfo

RAM istifadəsini yoxlamağın ən asan yolu /proc/meminfo vasitəsilədir. Bu dinamik olaraq yenilənmiş virtual fayl əslində pulsuz, top və ps alətləri kimi yaddaşla əlaqəli bir çox digər alətlər üçün ekran məlumatının mənbəyidir. Mövcud/fiziki yaddaşın miqdarından tutmuş diskə yazılması gözlənilən buferin miqdarına qədər, /proc/meminfo istifadə haqqında bilmək istədiyiniz hər şeyə malikdir. sistem yaddaşı. Proses yaddaşı haqqında məlumat da /proc/ saytından əldə edilə bilər. /statm və /proc/ /status

$ cat /proc/meminfo

2. üstə

Üst komanda terminal mühiti üçün ncurses əsaslı interaktiv sistem və proses müşahidəçisidir. Dinamik olaraq yeniləndiyini göstərir qısa məlumat sistem mənbələri (prosessor, yaddaş, şəbəkə, giriş/çıxış, kernel) yüksək sistem yükü halında rəngli xəbərdarlıqlarla. O, həmçinin prosesləri (və ya istifadəçiləri) ən yüksək resurs sərfiyyatına görə sıralaya bilər Sistem Administratoru sistemin yüklənməsinə hansı proses və ya istifadəçinin cavabdeh olduğunu deyə bilər. Yaddaş statistikası hesabatlarına ümumi/boş yaddaş, keşlənmiş/bufer edilmiş yaddaş və yaddaş məlumatı daxildir. virtual yaddaş.

$ sudo üstündə

3. pulsuz

Pulsuz əmr /proc/meminfo-dan əldə edilən yaddaş istifadəsi haqqında ümumi məlumat əldə etməyin sürətli və asan yoludur. Bu, ümumi/mövcud fiziki yaddaşın və sistem mübadiləsinin, həmçinin nüvədə istifadə olunan/boş bufer sahəsinin şəklini göstərir.

4. GNOME Sistem Monitoru

GNOME Sistem Monitoru göstərən qrafik proqramdır qısa bir tarix CPU, yaddaş, dəyişdirmə sahəsi və şəbəkə üçün sistem resursundan istifadə. O, həmçinin CPU və yaddaş istifadəsi üçün monitorinq prosesini təklif edir.

$gnome-sistem-monitor

5.htop

htop əmri real vaxt rejimində yaddaşdan istifadəni göstərən ncurses əsaslı interaktiv proses görüntüləyicisidir. O, bütün çalışan proseslər üçün əsas yaddaşda (RSS) prosesin yaddaş izi, yaddaşdakı ümumi proqram ölçüsü, kitabxana ölçüsü, ümumi səhifə ölçüsü və çirkli səhifə ölçüsü (keşdə) haqqında məlumat verə bilər. Siz bütün proseslərin (çeşidlənmiş) siyahısında üfüqi və ya şaquli olaraq sürüşə bilərsiniz.

6. KDE Sistem Monitoru

GNOME iş masası GNOME Sistem Monitoruna malik olsa da, KDE masaüstünün öz analoqu var: KDE Sistem Monitoru. Onun funksionallığı əsasən GNOME versiyasına bənzəyir, yəni sistem resursundan istifadənin real vaxt tarixini, həmçinin fərdi proseslərin CPU/yaddaş istehlakını göstərir.

$ksysguard

7. memstat

Memstat yardım proqramı hansı icra edilə bilən proses(lər)in və paylaşılan kitabxanaların virtual yaddaşı istehlak etdiyini müəyyən etmək üçün faydalıdır. Proses identifikatorunu əldə etməklə memstat icra olunan kod, verilənlər və bu proseslə əlaqəli paylaşılan kitabxanalar tərəfindən nə qədər virtual yaddaşdan istifadə edildiyini aşkar edir.

$ memstat -s

8.nmon

Nmon yardım proqramı monitorinq edən ncurses əsaslı sistem etalon alətidir CPU, yaddaş, disk giriş/çıxışı, nüvə, fayl sistemi və onlayn mənbələr. Yaddaşdan istifadəyə əsaslanaraq, o, ümumi/boş yaddaş, dəyişdirmə sahəsi, buferlənmiş/keşlənmiş yaddaş, yüklənmiş/boşaldılmış virtual yaddaş statistikası kimi məlumatları real vaxt rejimində göstərə bilər.

9.ps

Ps əmri real vaxtda fərdi proseslərin yaddaşdan istifadəsini göstərə bilər. Göstərilən yaddaşdan istifadə məlumatına %MEM (istifadə olunan fiziki yaddaşın faizi), VSZ (istifadə olunan virtual yaddaşın ümumi miqdarı) və RSS (istifadə olunan fiziki yaddaşın ümumi miqdarı) daxildir. Siz “–sort” seçimindən istifadə edərək proseslərin siyahısını çeşidləyə bilərsiniz. Məsələn, azalan RSS sırası ilə çeşidləmək üçün:

$ ps aux --sort -rss

10. smem

Smem əmri sizə /proc-dan əldə olunan məlumat əsasında müxtəlif proseslərin və istifadəçilərin fiziki yaddaş istifadəsini ölçməyə imkan verir. Bu yardım proqramı istifadəni dəqiq qiymətləndirmək üçün Proporsional Set Ölçüsü (PSS) metrikasından istifadə edir Linux prosesləri effektiv yaddaş ölçüsü. Yaddaşdan istifadə təhlili qrafik çubuq və dilim diaqramlarına ixrac edilə bilər.

$ sudo smem --pasta adı -c "pss"

11. üst

Üst komanda, resurs istifadəsi ilə bağlı müxtəlif proses statistikası ilə birlikdə işləyən proseslərin real vaxt rejimində monitorinqini təklif edir. Yaddaşla bağlı məlumatlara %MEM (istifadə olunan yaddaşın faizi), VIRT (istifadə olunan virtual yaddaşın ümumi miqdarı), SWAP (dəyişdirilmiş virtual yaddaşın miqdarı), CODE (kodun icrası üçün ayrılmış fiziki yaddaşın miqdarı), DATA (fiziki yaddaşın miqdarı) daxildir. icra edilməməsi üçün ayrılmış yaddaş). Yaddaş istifadəsi və ya ölçüsü əsasında proseslərin siyahısını çeşidləyə bilərsiniz.

12.vmstat

Vmstat komanda xətti yardım proqramı CPU, yaddaş, fasilələr və disk giriş/çıxışı daxil olmaqla müxtəlif sistem fəaliyyətləri üçün dərhal və orta statistik məlumatları göstərir. Yaddaş məlumatı mənbəyi kimi, bu əmr təkcə fiziki yaddaşdan istifadəni deyil (məsələn, ümumi/istifadə edilmiş yaddaş və yaddaş buferi/keş), həm də virtual yaddaş statistikasını (məsələn, yüklənmiş/səhifələnmiş yaddaş, səhifələnmiş/yüklənmiş) göstərir.

Vmstat komanda xətti yardım proqramı CPU, yaddaş, fasilələr və disk giriş/çıxışını əhatə edən müxtəlif sistem fəaliyyətlərinin ani və orta statistikasını göstərir. Yaddaş məlumatlarına gəldikdə, əmr yalnız fiziki yaddaş istifadəsini deyil (məsələn, ümumi/istifadə edilmiş yaddaş və bufer/keş yaddaş), həm də virtual yaddaş statistikasını (məsələn, daxil/çıxış, dəyişdirilmiş yaddaş) göstərir.

$ vmstat -s


Kateqoriyalar