Bazı web sitelerine göz atarken Linux'u dakikalarca tepkisiz hale getiren ne olabilir?


28

Linux 4.15 kullanıyorum ve bu Google, Facebook veya başka herhangi bir aç web sitesine göz attığımda defalarca başıma geliyor - Tüm işletim sistemi yanıt vermiyor, donuyor ve işe yaramaz hale geliyor. Çalıştığını gördüğüm tek şey, büyük ölçüde kullanımda olan (I / O azaltma) disk (ext4 olarak biçimlendirilmiş ana sistem bölümü).

Şişkinlikten kurtulmak için bir dakika veya daha fazla beklemeye zorlanırım, bazen on iki dakika boyunca tepkisiz kalır ve bu yüzden sinirli olurum. İşletim sisteminin çoklu görev yapmayı başaramaması, kesinlikle garip ve kabul edilemez bir davranış sergileme eğilimindedir.

Bu Firefox ile olur, ama sadece birlikte herhangi dahil javascript-tercüman uygulaması , Microsoft VSCode veya açısal-cli (ng serve komut) ve aynı zamanda icra başka kaynak aç ipliğin - bu durum olarak plantuml a göre çok büyük bir grafik oluştururken çok karmaşık UML diyagramı.

Bugün, işletim sistemi son zamanlarda kötü bir USB bağlantı noktasından küçük bir hareketle çıkarılmış olan harici bir HDD (ext4 bölümünün üzerinde) için bir veri kurtarma yazılımı başlattıktan sonra tamamen yönetilemez hale geliyor.

Buggy davranışının arkasındaki kök nedenini söyleyemiyorum

Tarayıcıda birçok sekme açtım ve dfçıktı başına% 94 işletim sistemi bölümü kullandım :

Filesystem     1K-blocks      Used Available Use% Mounted on
udev             3964160         0   3964160   0% /dev
tmpfs             798164      3192    794972   1% /run
/dev/sda5      173466400 153224316  11407424  94% /
tmpfs            3990820     62936   3927884   2% /dev/shm
tmpfs               5120         4      5116   1% /run/lock
tmpfs            3990820         0   3990820   0% /sys/fs/cgroup
/dev/loop5           128       128         0 100% /snap/anbox-installer/24
/dev/loop2           128       128         0 100% /snap/anbox-installer/17
/dev/loop4        223616    223616         0 100% /snap/kde-frameworks-5/26
/dev/loop3         90624     90624         0 100% /snap/core/7169
/dev/loop7        223616    223616         0 100% /snap/kde-frameworks-5/25
/dev/loop8         90624     90624         0 100% /snap/core/7270
/dev/loop0         87552     87552         0 100% /snap/qownnotes/2160
/dev/loop1        241664    241664         0 100% /snap/kde-frameworks-5/27
tmpfs             798164         0    798164   0% /run/user/0
tmpfs             798164        32    798132   1% /run/user/1000
/dev/loop9         87552     87552         0 100% /snap/qownnotes/2176
/dev/sda3      188669948 187132488   1537460 100% /media/kais/DATA
/dev/sdb1       15142960   2091904  13051056  14% /media/kais/STORE N GO

Donanım olarak kullanıyorum:

  1. Intel Core i3 v2348M'e göre lscpu:

    Architecture:        x86_64
    CPU op-mode(s):      32-bit, 64-bit
    Byte Order:          Little Endian
    Address sizes:       36 bits physical, 48 bits virtual
    CPU(s):              4
    On-line CPU(s) list: 0-3
    Thread(s) per core:  2
    Core(s) per socket:  2
    Socket(s):           1
    NUMA node(s):        1
    Vendor ID:           GenuineIntel
    CPU family:          6
    Model:               42
    Model name:          Intel(R) Core(TM) i3-2348M CPU @ 2.30GHz
    Stepping:            7
    CPU MHz:             905.312
    CPU max MHz:         2300.0000
    CPU min MHz:         800.0000
    BogoMIPS:            4589.49
    Virtualization:      VT-x
    L1d cache:           32K
    L1i cache:           32K
    L2 cache:            256K
    L3 cache:            3072K
    NUMA node0 CPU(s):   0-3
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb pti tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts
    
  2. 8 GB RAM. (Görmekhtop çıktıya bakınız).

  3. 99.83 MHz anakart veriyolu hızı
  4. 500 GB dahili HDD - Bu işletim sisteminden gelen SMART raporudur:

    smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.15.0-33-generic] (local build)
    Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
    
    === START OF INFORMATION SECTION ===
    Model Family:     Western Digital Blue Mobile
    Device Model:     WDC WD5000LPVX-22V0TT0
    Serial Number:    WD-WXE1E13AAMR4
    LU WWN Device Id: 5 0014ee 25db04ba7
    Firmware Version: 01.01A01
    User Capacity:    500,107,862,016 bytes [500 GB]
    Sector Sizes:     512 bytes logical, 4096 bytes physical
    Rotation Rate:    5400 rpm
    Device is:        In smartctl database [for details use: -P show]
    ATA Version is:   ACS-2 (minor revision not indicated)
    SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
    Local Time is:    Wed Aug  7 15:52:05 2019 CET
    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled
    
    === START OF READ SMART DATA SECTION ===
    SMART overall-health self-assessment test result: PASSED
    
    General SMART Values:
    Offline data collection status:  (0x00) Offline data collection activity
                        was never started.
                        Auto Offline Data Collection: Disabled.
    Self-test execution status:      (   0) The previous self-test routine completed
                        without error or no self-test has ever 
                        been run.
    Total time to complete Offline 
    data collection:        ( 8040) seconds.
    Offline data collection
    capabilities:            (0x7b) SMART execute Offline immediate.
                        Auto Offline data collection on/off support.
                        Suspend Offline collection upon new
                        command.
                        Offline surface scan supported.
                        Self-test supported.
                        Conveyance Self-test supported.
                        Selective Self-test supported.
    SMART capabilities:            (0x0003) Saves SMART data before entering
                        power-saving mode.
                        Supports SMART auto save timer.
    Error logging capability:        (0x01) Error logging supported.
                        General Purpose Logging supported.
    Short self-test routine 
    recommended polling time:    (   2) minutes.
    Extended self-test routine
    recommended polling time:    (  93) minutes.
    Conveyance self-test routine
    recommended polling time:    (   5) minutes.
    SCT capabilities:          (0x7035) SCT Status supported.
                        SCT Feature Control supported.
                        SCT Data Table supported.
    
    SMART Attributes Data Structure revision number: 16
    Vendor Specific SMART Attributes with Thresholds:
    ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
      1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       1
      3 Spin_Up_Time            0x0027   149   143   021    Pre-fail  Always       -       1541
      4 Start_Stop_Count        0x0032   057   057   000    Old_age   Always       -       43173
      5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
      7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
      9 Power_On_Hours          0x0032   083   083   000    Old_age   Always       -       12797
     10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
     11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
     12 Power_Cycle_Count       0x0032   091   091   000    Old_age   Always       -       9496
    191 G-Sense_Error_Rate      0x0032   001   001   000    Old_age   Always       -       250
    192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       399
    193 Load_Cycle_Count        0x0032   147   147   000    Old_age   Always       -       160989
    194 Temperature_Celsius     0x0022   101   092   000    Old_age   Always       -       42
    196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
    197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
    198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
    199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
    200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0
    
    SMART Error Log Version: 1
    No Errors Logged
    
    SMART Self-test log structure revision number 1
    No self-tests have been logged.  [To run self-tests, use: smartctl -t]
    
    SMART Selective self-test log data structure revision number 1
     SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
        1        0        0  Not_testing
        2        0        0  Not_testing
        3        0        0  Not_testing
        4        0        0  Not_testing
        5        0        0  Not_testing
    Selective self-test flags (0x0):
      After scanning selected spans, do NOT read-scan remainder of disk.
    If Selective self-test is pending on power-up, resume after 0 minute delay.
    

Bunlar kaynak başına kullanımın sonucudur htop:

  1  [|||||                    14.1%]   Tasks: 286, 1497 thr; 2 running
  2  [|||||                    13.2%]   Load average: 3.00 4.97 6.09 
  3  [|||||                    12.5%]   Uptime: 3 days, 16:12:35
  4  [|||                       9.3%]
  Mem[|||||||||||||||||||5.09G/7.61G]
  Swp[|||||||||||||||||||3.68G/4.65G]

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 7006 jvb        20   0 6640M  102M  6780 S  5.3  1.3 18:53.18 java -Xmx3072m -X
 8224 kais     20   0 4537M  771M  200M S  6.6  9.9  2h31:23 /usr/lib/firefox/
 2299 kais     20   0 2958M  184M 42912 S  5.3  2.4 13:54.41 /usr/lib/firefox/
 1216 root       20   0  519M  120M 94640 S  5.3  1.5  1h52:50 /usr/lib/xorg/Xor
28401 kais     20   0 3354M  584M  107M S  7.9  7.5 34:44.51 /usr/lib/firefox/
 8439 kais     20   0 4537M  771M  200M S  4.6  9.9 37:06.21 /usr/lib/firefox/
 8831 kais     20   0 3222M  351M 64828 R  4.0  4.5 11:19.87 /usr/lib/firefox/
 7025 jvb        20   0 6640M  102M  6780 S  0.0  1.3  0:18.34 java -Xmx3072m -X
 7027 jvb        20   0 6640M  102M  6780 S  0.0  1.3  0:18.05 java -Xmx3072m -X
 5901 kais     20   0  7492  5612  2904 R  4.0  0.1  0:00.66 htop
 5329 kais     20   0  547M 47456 38388 S  1.3  0.6  0:01.29 /usr/lib/gnome-te
13540 kais     20   0 2958M  184M 42912 S  2.0  2.4  0:06.25 /usr/lib/firefox/
16897 kais     20   0  904M 28292 18076 S  2.0  0.4 50:08.37 pavucontrol
17999 kais     20   0 2424M 29460 25380 S  1.3  0.4 52:41.73 /usr/bin/pulseaud
F1 Help  F2 Setup  F3 Search  F4 Filter  F5 Tree  F6 SortBy F7 Nice  -  F8 Nice  +  F9 Kill  F10 Quit

Bunlar , VM istatistiklerinin komut tarafından oluşturulan sonuçlarının da sonuçlarıdır.vmstat 5 .

AFAIK, yazılım yazılımı işletim sistemini tepkisiz hale getirmemelidir, bu yüzden işletim sisteminin işi süreçleri izole edip çoklu görev yapmayı sağladığı için, güvenlik yazılımının sorunun temel nedeni olduğunu düşünmedim veya hatta kabul etmedim.

Bu sorunun işletim sistemine özgü, donanıma özgü veya yapılandırmaya özgü olup olmadığını bilmiyorum.

Herhangi bir fikir?


4
Yorumlar genişletilmiş tartışmalar için değildir; bu konuşma sohbete taşındı . Lütfen yorumlar / sohbetten kaynaklanan açıklamalar için Soruyu gerektiği şekilde güncellediğinizden emin olun. Teşekkür ederim!
Jeff Schaller

3
Sisteminizin çok fazla değişmekte olduğundan şüpheleniyorum; çalıştırabileceğiniz vmstat 5sistem azdı bu süre? Önceden vmstat başlatmak ve donmalar sırasında basılan satırları göndermek tamam. Özellikle sistemin gerçekten ne kadar değişmekte olduğunu gösteren sütunlar sive sosütunlar arıyorum . Ayrıca, topbellek kullanımına göre sıralanmış (shift-M) çıktısını gönderebilir misiniz ? (ya da eşdeğer vuruş modu neyse)
19

1
Bir dosya sistemi neredeyse tamamen dolduğunda, çok yavaş olabilir. Ext4 ile durumun böyle olup olmadığından emin değilim.
Hiç kimse

1
@Kais İkisini de deneyin ve neyin işe yaradığını görün? Takasım hazırladığımın yarısına kadar doldurur ve donmamı sağlamaz. Birinin takas kullanımından dolayı yavaşlamaların ya da yavaşlamaların yaşanması da bence kullanım modellerine bağlıdır, bu yüzden deneyimlerimiz farklı olabilir.
JoL

2
Takas işlemini tamamen devre dışı bırakmayı deneyin; bu, sorunun kaynağı olarak disk çökmesini onaylar veya ortadan kaldırır. Takas etmenin amacı kullanılmayan sayfaları diske koymaktır, ancak sayfaların çoğu gerçekten kullanılıyorsa, takas işlemi yardımcı olmaz. Tipik iş yükünüz 10 GB'lık yerleşik sayfa gerektiriyorsa, 8GB'lık bir makine mücadele edecektir. Kaynak tükenmesinin cevabı iş yükünü düşürmek veya kaynağı arttırmaktır (bu durumda, kromu deneyin veya daha fazla fiziksel bellek ekleyin).
bain

Yanıtlar:


27

Linux'u bu kadar tepkisiz kılan şey nedir?

Büyük miktarlarda değiş tokuşa neden olan mevcut RAM fazlalığı, bunu kesinlikle yapabilir. Mekanik HDD’nizdeki rasgele erişim I / O’nun sadece saniyede 100 civarında arama yapabilen bir okuma / yazma kafası hareket ettirmesi gerektiğini unutmayın.

RAM'i "çok fazla" aşarsanız, Linux'un öğle yemeğine tamamen çıkması normaldir. Ayrıca bir diskim ve 8GB RAM'im var. Bellek sızıntısı olan birkaç yazılım parçasıyla ilgili sorun yaşadım. Yani hafıza kullanımları zamanla büyümeye devam ediyor ve hiç küçülmiyor, bu yüzden kontrol etmenin tek yolu yazılımı durdurmak ve yeniden başlatmaktı. Bu süreçte yaşadığım deneyimlere dayanarak, eğer 3GB + takas üretiyorsanız, on dakikadaki gecikmeleri duyduğuma çok şaşırmıyorum.

Bunu, 3GB'tan fazla takas uygulamanızın olduğu her durumda görmeniz gerekmez. Teori, anahtar kavramın çökmekte olduğunu söylüyor . Öte yandan, iki farklı çalışma grubu arasında geçiş yapmaya çalışıyorsanız ve 3 GB giriş ve çıkış değiştirmeyi gerektiriyorsa, 100 MB / s'de G / Ç modeli mükemmel şekilde optimize edilmiş olsa bile en az 60 saniye sürer. Uygulamada, G / Ç paterni optimal olmaktan uzak olacaktır.

Bununla ilgili yaşadığım sıkıntıdan sonra takas alanımı 2GB'ye (öncekinden birkaç kat daha küçük) yeniden biçimlendirdim, böylece sistem o kadar derinden takas edemezdi. Bunu, bölmeyi yeniden boyutlandırma konusunda karışıklığa uğramadan bile yapabilirsiniz, çünkümkswapİsteğe bağlı bir boyut parametresi aldığından .

Zorlu denge, hafızanın tükenmesi ve işlemlerin ölmesi ile sistemin o kadar uzun süre dayanması arasında olduğu gibi vazgeçip yeniden başlatmanız arasındadır. 4GB'lik bir takas bölümünün çok büyük olup olmadığını bilmiyorum; ne yaptığınıza bağlı olabilir. Önemli olan disk çalkalamaya başladığında dikkat etmek, bellek kullanımınızı kontrol etmek ve buna göre yanıt vermektir.

Çok işlemli uygulamaların hafıza kullanımını kontrol etmek zordur. İşlem başına bellek kullanımının paylaşılan hafızayı çift saymadan görmek için, PSIZE sütununda kullanabilir sudo atop -R, Mve tuşlarına basabilir mve bakabilirsiniz. Ayrıca kullanabilirsiniz smem. smem -t -P firefoxtüm firefox işlemleriniz için PSS’yi ve ardından toplam PSS’yi içeren bir satır gösterecektir. Firefox veya Chrome tabanlı tarayıcıların toplam bellek kullanımını ölçmek için doğru yaklaşım budur. (Her bir sekmeyi gösterecek olan bellek kullanımını göstermek için tarayıcıya özgü özellikler de olmasına rağmen).


1
Yorumlar genişletilmiş tartışmalar için değildir; bu konuşma sohbete taşındı .
Jeff Schaller

ulimitİşlemlerin kullanımını kontrol etmeyi denemek için kullanmayı düşünmeye değer olabilir (çok işlemli bir uygulama için zor olabilir, ancak yardımcı olabilir).
Toby Speight

2
@TobySpeight, uygulama belleği kullanımını sınırlamak istiyorsanız, daha sonra cgroups kullanmanız gerekir. ulimitgerçekten yardımcı olmuyor.
kaynakjedi

Evet, bu muhtemelen daha iyi bir seçim. Her neyse, cevabında gerçekten bahsedilmeye değer.
Toby Speight

2
The important thing is to watch out for when the disk starts churning, check your memory usage, and respond accordingly.<- veya bir GUI kullanıyorsanız, ne kadar boş RAM kaldığını kontrol eden ve sizi uyaran ne kadar boş RAM olduğunu kontrol eden basit bir betiği çalıştıran bir crontab yapın. Linux Mint için kendim yaptım ve ondan biraz öğrendim. Bu, deneyip deneyebileceğin bir şey.
Ismael Miguel,

5

AFAIK, bloatware işletim sistemini tepkisiz hale getirmemelidir, bu yüzden de bloatware'in sorunun asıl nedeni olduğunu düşünmedim ve hatta kabul etmedim.

Sen hiç böyle etmeyeceğiz ama bloatware düşünüyorum olduğunu sizin probleminiz (problemin bellek veya disk olup olmadığından emin ). Ne yazık ki, Linux çekirdeği, yüksek bellek basıncı durumlarıyla başa çıkmakta berbat bir durumdur ve bellek tükendiğinde temel olarak yeniden başlatma gerektirdiği bilinmektedir. Sorununuzun kaynak tükenmesi olduğuna inanmamı sağlayan üç şey var:

  1. Kök (/) ve DATA disk alanınız neredeyse dolu. DATA'yı ne için kullandığınızdan emin değilim, ancak kök bölümümün yeniden boyutlandırılması ve sistemimin çalışamaz hale gelmesiyle ilgili sorunlar yaşadım.
  2. Yüksek bellek basıncınız vardır, bu da RAM'inizin neredeyse dolu olduğu anlamına gelir. RAM dolmaya başladığında sayfa hatası almaya başlayacaksınız. Çekirdek, bir işlem için yeterli bellek ayıramadığında ve bunun yerine sistemlerin bazılarını çok daha yavaş takas alanı kullanması gerektiğinde, sayfa hataları meydana gelir. Bu bizi son gözlemimize yönlendirir:
  3. Takas alanınız neredeyse dolu. Hem RAM hem de takas neredeyse dolu olduğundan, sisteminizde bazı yüksek bellek basıncı var.

Temel olarak, bu üçünü bir araya getirin ve sisteminizde pek çok şey yapmak için yeterli kaynak bulunmuyor. Linux'un düşük hafızalı durumları (Windows'taki NT çekirdeği ile karşılaştırıldığında) ne kadar zayıf bir şekilde ele alması talihsiz bir durumdur, ancak durum böyledir. Bu Reddit iş parçacığında ve bağlantılı posta listesinde daha fazla tartışma bulabilirsiniz .

Durumunuzu nasıl düzelteceğinize gelince, takas boyutunuzu arttırmanın iyi bir fikir olduğunu söyleyebilirim, ancak disk alanınız düşük olduğundan sorun çıkacak. Minecraft sunucunuzda bir ton insan yoksa, hafızasını 1024 m civarında bir şeye düşürmenin güvenli olacağını düşünüyorum (kişisel olarak 1024 m'yi yaklaşık 10 kişiyle kullanıyorum ve iyi çalışıyor). Minecraft sunucunuz için tıkaç veya kağıt da kullanırım, çünkü daha performans gösterme eğilimindedirler.

İyi şanslar!


7
Açıkça belli bir sorun bu, disk değil. Yüksek bellek baskısı altında Linux'un kötü olduğu doğru. Ancak, yeniden başlatmanın gerekli olduğu doğru değildir. Bir belleği boşaltmayı başarırsanız, Linux, bellek basıncı kullanılabilir kapasiteyi aşmadan önceki gibi duyarlı olacaktır.
Gilles 'SO- kötülük olmayı'

1
@Kais, takas alanından bahsettiğimden ve 3. noktadan bahsetmeye devam ettiğimden beri, “biz bizi son gözlemimize götürüyor” dedim. RAM'in 3G'si. Diyordum ki, aynı anda oynayan bir sürü insanınız yoksa, bu kadar RAM'e ihtiyacınız olmayabilir. Vanilya MC'ye göre daha iyi performansa sahip alternatif Minecraft sunucuları olan kağıt ve tıkaç hakkında konuşurken "daha performans gösterme eğiliminde" dedim.
Chase,

2
Genel olarak takas kullanmanın kötü bir fikir olduğunu duydum. En azından sunucu ortamında, 12 dakika boyunca donma kabul edilmediğinde?
9ilsdx 9rvj 0lo

2
@Kais, deneyimlerime göre, GUI olmayan programlarla Windows daha da kötü, ancak bellek baskısı yüksekse, masaüstü uygulamalarının arka plana sahip olmadığı varsayımıyla masaüstü için sorunu çözen ön plan dışı GUI programlarını askıya alacak görevler.
Simon Richter

2
Vanilya Minecraft belki; fakat büyük modpack'ler oyuncu bile girmeden önce kolayca 3
GiB'a ulaşıyor

4

Çıktı nedir free -m? Ne kadar kullandığınızı bilmiyorsak, sahip olduğunuz RAM miktarı anlamsız. Bu ve ne kadar takas alanı kullanıldığını bilmekle ilgileniyorum.

Yine de kendi sorunuza cevap verdiğinizi düşünüyorum. Tarayıcınızda "çok sayıda sekme" açık olması, hiç bir zaman kapatmazsanız, sistem ne olursa olsun bellek tüketmeye devam edeceklerinden kesinlikle sisteminizi yavaşlatabilir; Sisteminiz donduğunda, bir seferde kaç tane açtınız?

Sisteminiz, “çok karmaşık bir UML diyagramından çok büyük bir grafik oluşturma” gibi diğer bellek yoğun görevlerden donuyorsa da anlamlıdır. Bu, grafiği oluştururken sisteminizi kesinlikle yavaşlatır, bu yüzden bu pek de şaşırtıcı değil.

Gerçekten de, sisteminizin davranması gerektiği gibi geliyor. Ya öyle ya da burada bir şeyleri özlüyorum.

Bu arada, HDD istatistikleri sisteminizin ne zaman tepkisiz hale gelmesi önemli değil çünkü hafıza yetersizliği neredeyse her zaman suçlu.


1
"Bu, sisteminizi kesinlikle yavaşlatır" - Evet, bu bekleniyor, ancak kontrol edilemeyen bir X oturumuna neden olması beklenmiyor (donmuş sistemin sonucu), fare imlecinin hareket ettiğini göremiyorum.
Kais

1
Bu gerçekten beklenen bir şeydi, tanımladığınız davranış tam olarak sistemimde çok fazla RAM kullandığımda gerçekleşiyor. Sistemimde, metin tabanlı bir terminale geçemediğim noktaya kadar tıkadım ve RAM'i de senin gibi yaptım. Eğer X oturumunuzu kullanamayacağınız bir durumla karşılaşırsanız, metin tabanlı terminale geçmeli ve rahatsız edici süreçleri öldürmelisiniz. Bu başarısız olursa, sert bir yeniden başlatma yapmanız gerekir. Size söyleyebileceğim en iyisi.
Zach Sanchez

1
@ Kais macOS da düşük bellek durumlarında durgunlaşıyor. Sistemin RAM'de hangi hafızada tutması gerektiğine kesin olarak karar vermesinin hiçbir yolu yoktur, bu nedenle uygulamalar arasında geçiş yapmak, kullanıcı arayüzünün tepkisiz hale geldiği noktaya deli gibi girip çıkıyor.
Kusalananda

5
ehh, "pencere yöneticisini" UI'nın yanıt vermeye devam etmesinin daha etkili bir yolu olmadığı için değil. MS araştırması, talep sayfalamasını yasaklayan bir tasarım üzerine deneysel bir işletim sistemi yazdı. Kavram kanıtı: Midori'deki "pencere yöneticisini" çalıştırın, takas dahil Linux uygulamalarını taklit edin. İşte, "pencere yöneticisi" uygulamalar değişse bile duyarlı kalacaktır. En azından, belleği serbest bırakmak için bazı uygulamaları güvenilir bir şekilde öldürmenize izin verebilir. Linux mükemmel değil. Gnome, X11'den Wayland'a geçiş bile aşırı yüklenmiş sistemlerde wrt duyarlılığını belirgin şekilde daha da kötüleştirdi.
sourcejedi

2
HDD istatistikleri önemli olabilir. Tepki vermemenin olası bir nedeni, devasa bir G / Ç birikimine neden olan başarısız bir disktir. Ancak bu durumda bunun olduğuna dair herhangi bir kanıt göremiyorum.
200_success

4

Başlığı okuduğumda, benim düşüncem "yeterli RAM" değildi, çünkü bu sorunu kendim de Linux üzerinde yaşadım, çok fazla tarayıcı sekmesi açtıktan sonra 10 + dakika frantik disk çöktü. Katılıyorum, bu kasvetli ve iyileştirilmesi gerekiyor. Windows bu durumu daha iyi ele alıyor.

Bazı öneriler:

  • Sistem tepsinize bir bellek monitörü uygulaması ekleyin, böylece ona göz kulak olabilirsiniz.
  • Firefox’un tercihlerinde "içerik işlem limiti" ni "1" olarak ayarlayın. Ayarın altındaki metnin dediği gibi: "Ek içerik işlemleri, birden fazla sekme kullanıldığında performansı artırabilir, ancak daha fazla bellek kullanır."
  • Belleğe aç tarayıcı eklentilerini kaldırın veya değiştirin. Reklam engelleyiciyi saklayın, çünkü reklamlar herhangi bir engelleyiciden daha fazla bellek tüketir.
  • Belleğe açılmış diğer programları araştırın ve kaldırın.

Ancak, tek doğru çözüm daha fazla RAM satın almak.

Yalnızca çok sayıda RAM bu felaketin oluşmasını engellemekle kalmaz, aynı zamanda sistemin RAM'in içinde büyük bir dosya önbelleği oluşturmasına izin verir, bu da sisteminizin şu anda yapamayacağı bir limit olduğundan çok daha fazla çalışmasını sağlar. Büyük bir dosya önbelleği HDD’den uzaklaşacak ve sistemdeki hemen hemen her işlemin daha hızlı hissetmesini sağlayacaktır. Buna değer.


Harika cevap, çok teşekkürler. Ancak, "Ek içerik işlemleri, birden fazla sekme kullanırken performansı artırabilir ancak daha fazla bellek kullanır." - Doğru anlarsam, Firefox varsayılan ayar başına Sekme başına 8 işlem açabilir mi?
Kais

1
@Kais Sekme başına 1 işlem olduğunu düşünüyorum. Her durumda, sınırı 1 olarak ayarlarsanız, daha az bellek kullanması gereken tüm sekmeler için toplam 1 işlem olacaktır.
Boann

Anladım, tekrar teşekkürler.
Kais

4

Htop çıktınız, RAM ihtiyacınızın kapasitesinden daha yüksek olduğunu gösterir (toplam RAM + SWAP). Bu nedenle, göz önünde bulundurulması gereken ilk husus, RAM kullanımını azaltmak veya RAM kullanılabilirliğini artırmaktır.

Günümüzdeki firefox sürümlerinin, pencerelere / sekmelere işlem ve bellek alanı verilme biçimi nedeniyle aşırı derecede aç olduğunu unutmayın. Buradaki fikir, tüm tarayıcıyı dizlerine götüren sekmeleri çökmekten kaçınmaktı. Bu fiyata değer mi? Kim söyleyebilir ... Her neyse, Pentium 4 anakartım yalnızca 2GB RAM'i desteklediğinden dolayı da benzer bir sorun yaşadım. Hafıza tükenmesi muhtemel çökmelerden kaçınmak için, yedek bir SSD'ye ~ 800M takas alanı ekledim, açıkçası bunu mümkün olduğunca az kullanmak niyetindeyim. Çekirdeğin bellek sayfalarını değiştirmek için ne kadar istekli olduğunu belirleyen, takas olarak bilinen bir ayarı değiştirerek bunu başardım. Bazı yararlı komutlar aşağıdaki gibidir.

Mevcut değiş tokuşu kontrol edin: cat /proc/sys/vm/swappiness

Bu size 60 civarında bir sonuç verebilir, bu da daha düşük yüke sahip sistemlerde maksimum performans için oldukça yüksektir. Sizin için, açıkçası bu, tersine üretken çalışır, böylece sysctl vm.swappiness=1, sistem çalışırken ayarı değiştirmek için bir komut kullanarak ayarı değiştirebilirsiniz.

Bu değişiklikleri kaydetmek için dosyayı aramanız gerekir /etc/sysctl.conf. Bu dosyada değeri değiştirin veya satır ekleyin vm.swappiness=1.

Unutmayın, bu sizin durumunuzda bir çözüm değil, kullanılabilir bir geçici çözüm yapmalı.

Krediler https://askubuntu.com/questions/103915/how-do-i-configure-swappiness

Yukarıdaki cevap için kaynak, daha fazla açıklama içerir. Bu postayı davamda çok faydalı buldum.


Cevabınız için teşekkürler. Bu, VM yapılandırması için iyi bir öneri gibi görünmektedir.
Kais

2

Sorunun nasıl ortaya çıktığı, devam ettiği ve büyüdüğü konusunda bazı mükemmel tartışmalar. İlk bilgisayarın tasarımına donanım atarak ve / veya mevcut bir uygulamayı yükselterek, yaşadığınız gibi sorunların üstesinden gelmeyi seviyorum. Yapabilir misin,

  • RAM ekleyin (32GB birçok kurulum için harika çalışır)

  • sabit disk sürücünüzü bir SSD ile değiştirin

  • takas sürücüsü için bir SSD (Katı Hal Sürücüsü) ekleyin

  • RAM'de bir takas bölümü oluşturun (32 veya daha fazla GB RAM ile)

  • daha hızlı bir HDD edinin

  • daha hızlı işleme ve daha geniş / daha hızlı veri yolu mimarisine sahip bir sisteme geçin.

Bu donanım yükseltmelerinin / değiştirmelerinin bazıları 100 ABD Dolarının altında olabilir. Bunlar Linux'a veya kesin yazılım uygulamalarınıza özgü değildir, ancak kullandığınız donanım görevleriniz için yeterli görünmüyor.


1
Çok faydalı bir cevap, donanım değiştirme önerilerini gösterdiğiniz için teşekkür ederiz.
Kais

1
Umarım yardımcı olur. Ne tür bir bilgisayar veya belirli bir donanım olduğunu bilmediğinizden, bunlar büyük olasılıkla iyileştirme amacıyla genel adımlar. Herhangi biri veya tümü, önbellek, takas ve genel olarak daha hızlı ve daha az disk okuma / yazma işleminden kaynaklanabilecek muhtemel yavaşlamalara yardımcı olacaktır
Old Uncle Ho

6
Bunların çoğu iyi önerilerdir, ancak RAM’e takas yapmak, RAM’e sıkıştırılmış takas yapmak için zram veya zswap kullanmıyorsanız temelde işe yaramaz - onlar değerlidir, ancak sıkıştırılmamış bir ramdisk takas etmek tam olarak ne kadar RAM baskısı yaratırsa, aslında, ek yükü nedeniyle biraz daha fazla).
Cas

Yüksek RAM / Düşük CPU iş yüklerinde harika bir fikir gibi görünen sıkıştırma dışında, neden RAM’in takas edeceğinden emin değilim.
Peter - Monica,

1
@bain: o nasıl zamankinden daha iyi RAM vs. dışarı takas sayfaları için hala eşleştirilmiş? Sıkıştırma kullanmıyorsanız, hala aynı kadar fiziksel RAM kullanıyorlar. Budur değeridir. Tek fark daha fazla defter tutma ama belki de daha temiz donanım sayfa tabloları. Temelde ihmal edilmeyi ihmal eden sadece başlangıç ​​hafızası için, örneğin sadece başlatma sırasında dokunulan fonksiyonlar / veriler, diske takas yapmak daha iyidir çünkü herhangi bir DRAM alanı kullanmaz. Etkileşimli olarak kullanılmayan arka plandaki zindanlarda gecikme önemli değildir, bu yüzden tekrar disk takas kazanır.
Peter Cordes

2

Genellikle kullanılamaz hale gelen "sadece" X11 olur. Klavyenizden bir programa bir tuş vuruşu yapmak ve ekranda herhangi bir şey göstermesini sağlamak için birkaç farklı işlemde kodun çalışması gerekir. (Çekirdekten gelen tuşa basmak için X sunucusu, olayı almak ve bir şey çizmeye karar vermek için çekirdekten, xterm'den veya eşdeğerinden sonra, bir fonttan bir glif çizmek için X sunucusuna bir mesaj gönderin.)

Sadece farenizi bir pencere üzerinde sallamak, bir sürü Javascript boku içeren bir sayfa gösteren bir web tarayıcısıyla sallamak, hepsi bu işlemlerin uyanmasına ve bir demet verilere dokunmasına neden olan, bir sürü işlem için bir sürü mesajla sonuçlanabilir. Muhtemelen bir demet "önbelleğe alınmış" sıkıştırılmamış bitmap dahil. Bu nedenle, yakında ihtiyaç duyulan daha fazla şeyi tahliye etme olasılığı yüksektir.

Başka bir sanal konsola geçmek için ctrl + alt + F2, genellikle bir şeyin takaslanmasına neden olduğunda kabuk komutlarını yalnızca birkaç saniye gecikmeyle açıp çalıştırmayı mümkün kılar. Sadece bash; Linux çekirdeği değiştirilemez ve tüm VT ve
klavyede <-> TTY kodu bulunur.


Gerçekten düştüğünüzde yavaşlamayı önlemek için “değiş tokuş” özelliğini azaltmak yardımcı olabilir. mesela ben set /proc/sys/vm/swappinessiçin ayarlanabilir 6RAM 16GB ve NVMe SSD'sinde 2GB takas bölümü ile masaüstümde. Etkileşimli gecikme için ayarlama hakkında daha fazla bilgi edinebilirsiniz (sunucu çıkışının aksine); herhangi bir rehber ayarlanabilir olduğunu söyleyecektir.

Fakat herhangi bir takasınız varsa, Linux OOM katilini çağırmadan önce kullanır. Takas bölümünüzü küçük tutun, Linux'un genellikle uzun süre kullanılmayacak gerçekten eski bir saçmalık bırakması için yeterince büyük tutun . (örn. hafıza sızdırıyor!)

Takas dolu olma konusunda herhangi bir sorun yaşamadım. Modern Linux sınırlı takas alanına sahip olmakla ilgileniyor. Chromium (firefox yerine kullanıyorum) bazen onlarca Stack Overflow sekmesi açıkken yavaşlıyor, ancak The Great Suspender , kullanmadığınız zamanlarda sekmeleri boşaltmak için hoş bir eklenti. Sanırım bu benim için önemli bir RAM tasarrufu sağlıyor, ancak yalnızca bir metin kutusuna hiçbir şey yazmadığınız sekmeleri kaldıracak. Firefox için de mevcut olabilir.


Diğerlerinin önerdiği gibi, 16GB RAM, Linux ile etkileşimli kullanım için gerçekten çok hoş. DRAM fiyatları şu anda nispeten düşük ; yaklaşık 1,5 yıl önce tükürdükten sonra, çoğunlukla tekrar reddetti.


Harika cevap, bir demet teşekkürler. Ancak, "bir sürü Javascript saçmalığı, hepsi bu işlemlerin uyanmasına ve bir sürü veriye dokunmasına neden olan bir sürü işlem için bir demet iletiye neden olabilir" - Bu işlemlerin ne olduğunu merak ediyorum, bunlar Firefox mu? çocuk süreçleri?
Kais

@Kais: Pencere yöneticisi, web tarayıcısı, X sunucusu, daha karmaşık bir masaüstünde muhtemelen diğer X istemcileri. Ve farenizin üzerinde dalgalanan diğer işlemler (bu cümleyi yazarken düşündüğüm şeydi). Örneğin, KDE'de görev çubuğu, pencere yöneticisinden ayrı bir işlemdir ( plasma) kwin.
Peter Cordes

LXDE kullanıyorum, bu yüzden benim durumumda sadece Openbox ve XOrg sunucusu uyandıracak işlemler mi? Ayrıca, onlara iletilen mesaj türleri nelerdir?
Kais

@Kais: Bir unix alan adı soketi üzerinden X11 protokol mesajları. xevFareyi hareket ettirerek ne tür mesajlar alabileceğinizi görmek için bir süre koşmayı deneyin . Ayrıca strace xevmüşteri tarafı için yapılan sistem çağrılarını görmeye çalışın .
Peter Cordes

Teşekkürler görüyorum. xevKomutu çalıştırırken , sadece farklı pencerelere geçerek ve üzerlerine tıklayarak mesajlarım var, ancak farenin üzerinde hareket ettiğimde durum böyle değil.
Kais

-2

Bazı web sitelerine göz atarken Linux'u dakikalarca tepkisiz hale getiren ne olabilir?

Linux hakkını kullanmıyorsun. Kaynak sınırlı bir makinede özellikle fark edilir hale gelir. Daha fazla RAM'e ya da daha hızlı bir işlemciye ihtiyacınız yok.

Arka fon:

Almost every non-user program’s priority is 0.
Almost every user program’s priority is 20.

Sorununuzu 'düzeltmek' için:

Kullanıcı olmayan programları tek başınıza bırakın, ancak kullanıcı programlarınızın önceliklerini (hoş düzeyler) değiştirmeye başlayın, böylece size sorun çıkarmazlar. Programlarınızı neyin başlattığını, genellikle sorun değil en kötü suçluya kadar iyi seviyeler eklemek için düzenleyin.

Gerçek Dünyadan Örnekler:

KMail:          nice -n 1 kmail -caption "%c" %i %m
LibreOffice:    nice -n 2 libreoffice --writer %U
Firefox:        nice -n 3 firefox %u
WorstOffender:  nice -n 9 {i'm a bad program}

WorstOffender'ınız dakikalarca tepkisizleşmeye devam edecek, bu tam anlamıyla bir go go daha iyi bir kutu sorunu, ancak şimdi tüm işletim sisteminizin (Linux) ve çalıştığınız her şeyin tepkisizleşmesine neden olmayacak.


2
Hem birçok sunucuyla hem de kendi iş istasyonumla (genellikle çok sınırlı VM kurulumlarında) Linux ile on yıllarca çalıştım ve bir zamanlar RAM ile ilgili bir performans sorununu çözmek zorunda kalmadım nice -n. "Daha fazla RAM'e ihtiyacınız yok" - kesinlikle daha fazla RAM'e ihtiyacı var; veya ulimiten kötü suçluları sınırlamak için kullanabilir , böylece mevcut RAM'i tekrar yeterli olur. “Linux hakkını kullanmıyorsun.” tamamen kapalı.
AnoE

Ve son 22 yıldır kaynak sınırlı donanım üzerinde Linux GUI yükler ile çalıştı ve “hoş” tutmak çözmek için çalışmalarını ing ettik “dakika Linux tepkisiz.”
Michael

İşe yaradığını inkar etmiyorum; Ben tıpkı ileri koyarak söylüyorum Linux ile çalışmaya "doğru" yolu en iyi şey olmayabilir.
AnoE
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.