Що може зробити Linux безвідповідальним протягом декількох хвилин під час перегляду певних веб-сайтів?


28

Я використовую Linux 4.15, і це трапляється зі мною багато разів, коли я переглядаю Google, Facebook або будь-який інший веб-сайт, який охоплює ресурси - Вся ОС стає невідповідною, замороженою та марною. Єдине, що я бачу, як це працює - це диск (основний системний розділ, відформатований як ext4), який широко використовується (дроселювання вводу / виводу).

Мене змушують чекати хвилину або більше, щоб позбутися від набряку, іноді він залишається невідповідним протягом дванадцяти хвилин, а значить, я засмучуюся. Те, що ОС не в змозі добре впоратися з багатозадачністю, має тенденцію відображати абсолютно дивну та неприйнятну поведінку.

Це трапляється не тільки з Firefox, але і з будь -яким додатком для інтерпретатора JavaScript, включаючи Microsoft VSCode або angular -cli ( ng serveкоманда), а також будь-яким іншим потоком виконання, що працює на ресурсах - наприклад, у випадку Plantuml при генерації дуже великого графіка з дуже складна діаграма UML.

Сьогодні ОС стає абсолютно некерованою після запуску програмного забезпечення для відновлення даних для зовнішнього жорсткого диска (через розділ ext4), який останнім часом відключився від поганого USB-порту невеликим ходом.

Я не в змозі сказати першопричину такого поведінки

У браузері відкрито багато вкладок і використання 94% ОС-розділу за dfрезультатами:

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

Як апаратне забезпечення я використовую:

  1. Intel Core i3 v2348M відповідно 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 ГБ оперативної пам’яті. (Див. htopВихід нижче).

  3. Швидкість шини материнської плати 99,83 МГц
  4. Вбудований жорсткий диск 500 Гб - це SMART звіт операційної системи:

    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.
    

Це результати використання ресурсів на 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

Це і результати статистики VM, згенерованої командою vmstat 5.

AFAIK, програмне забезпечення не повинно змусити ОС реагувати на реагування, тому я б не вважав і навіть не приймав, що саме програмне забезпечення є першопричиною проблеми - оскільки завдання ОС - ізоляція процесів та забезпечення багатозадачності.

Я не знаю, чи є ця проблема специфічною для ОС, апаратною чи конфігураційною.

Будь-які ідеї?


4
Коментарі не для розширеного обговорення; ця розмова переміщена до чату . Будь ласка, не забудьте оновити Запитання, як потрібно для будь-яких роз'яснень, які випливають із коментарів / чату. Дякую!
Джефф Шаллер

3
Я підозрюю, що ваша система багато змінюється; чи можете ви запускатись, vmstat 5поки ваша система не працює? Добре заздалегідь запустити vmstat та розмістити рядки, надруковані під час заморожування. Я шукаю спеціально для стовпців siта soстовпчиків, які вказують на те, наскільки система насправді поміняється. Також, чи можете ви розмістити вихід top, відсортований за використанням пам'яті (shift-M)? (або будь-який еквівалентний режим htop)
marcelm

1
Коли файлова система майже повна, вона може стати дуже повільною. Я не впевнений, чи це, мабуть, так з ext4.
Ніхто

1
@Kais Спробуйте обидва і подивіться, що працює? Мій своп заповнює максимум половину того, що я підготував, і це не викликає у мене ніяких замерзань. Будь-який досвід сповільнюється чи ні від використання свопів, також залежить від моделей використання, я думаю, тому наш досвід може відрізнятися.
JoL

2
Спробуйте повністю відключити swap - це підтвердить або усуне обмоложення диска як джерело проблеми. Сенс заміни полягає в тому, щоб поставити невикористані сторінки на диск, але якщо більшість сторінок дійсно використовуються, то заміни не допоможуть. Якщо для вашого типового навантаження потрібні 10 ГБ резидентних сторінок, тоді машина з 8 ГБ буде боротися. Відповідь на вичерпання ресурсів полягає в тому, щоб або знизити навантаження, або збільшити ресурс (у цьому випадку спробуйте хромувати або додати більше фізичної пам'яті).
bain

Відповіді:


27

Що може зробити Linux таким невідкличним?

Перевиконання доступної оперативної пам’яті, що викликає велику кількість замінів, безумовно, може зробити це. Пам’ятайте, що введення / вивід випадкового доступу на вашому механічному жорсткому диску вимагає переміщення голови читання / запису, що може робити лише близько 100 пошуків в секунду.

У Linux звичайно йде повністю на обід, якщо ви перевиконаєте оперативну пам'ять "занадто багато". У мене також є прядильний диск і 8 Гб оперативної пам’яті. У мене виникли проблеми з парою програмного забезпечення з витоком пам’яті. Тобто використання їх пам'яті з часом постійно зростає і ніколи не скорочується, тому єдиним способом контролю над цим було б зупинити програмне забезпечення та потім його перезапустити. На основі досвіду, який я мав під час цього, я не дуже здивований, коли чуєш затримки на десять хвилин, якщо ти генеруєш 3 ГБ + свопу.

Ви не обов'язково побачите це у всіх випадках, коли у вас більше 3 Гб свопу. Теорія каже, що ключовим поняттям є молотість . З іншого боку, якщо ви намагаєтесь перемикатися між двома різними робочими наборами, і для цього потрібна заміна 3 Гб в / у, при 100 Мб / с це займе щонайменше 60 секунд, навіть якщо схема вводу / виводу може бути ідеально оптимізована. На практиці модель вводу / виводу буде далеко не оптимальною.

Після труднощів, які виникли у мене, я переформатував свій обмінний простір на 2 Гб (в кілька разів менше, ніж раніше), щоб система не змогла так глибоко мінятись. Ви можете це зробити навіть без того, щоб заплутуватися навколо зміни розміру розділу, оскільки mkswapприймає необов'язковий параметр розміру.

Приблизний баланс полягає в тому, що не вистачає пам’яті і процес вбивається, і система зависає так довго, що ви все-таки відмовитесь і перезавантажтесь. Я не знаю, чи є розміром 4GB своп-розділ занадто великий; це може залежати від того, що ти робиш. Важливо - слідкувати за тим, коли диск починає звучати, перевіряти використання пам'яті та відповідати відповідним чином.

Перевірка використання пам'яті багатопроцесорних програм складно. Щоб побачити використання пам’яті за кожним процесом без подвійного підрахунку спільної пам’яті, ви можете використовувати sudo atop -R, натискати Mта mта дивитись у стовпці PSIZE. Ви також можете використовувати smem. smem -t -P firefoxпокаже PSS всіх ваших процесів Firefox, а потім рядок із загальним PSS. Це правильний підхід для вимірювання загального використання пам’яті браузерів на базі Firefox або Chrome. (Хоча існують і функції для відображення використання пам’яті, які відображатимуться окремі вкладки).


1
Коментарі не для розширеного обговорення; ця розмова переміщена до чату .
Джефф Шаллер

Можливо, варто подумати про використання ulimitдля спроби контролю над процесами (це складно з багатопроцесорним додатком, але може бути корисним).
Toby Speight

2
@TobySpeight, якщо ви хочете обмежити використання пам’яті додатків, тоді вам потрібно використовувати групи. ulimitнасправді не допомагає.
sourcejedi

Так, це, мабуть, кращий вибір. Це все одно варто згадати у відповіді.
Toby Speight

2
The important thing is to watch out for when the disk starts churning, check your memory usage, and respond accordingly.<- або, якщо ви користуєтесь графічним інтерфейсом, зробіть crontab, який виконує простий скрипт (щохвилини або близько того), який перевіряє, скільки вільної оперативної пам’яті вам залишилося, попереджаючи про це. Я зробив власну для Linux Mint, і я навчився з неї зовсім небагато. Це те, з чим можна спробувати пограти.
Ісмаїл Мігель

5

AFAIK, програмне забезпечення не повинно робити ОС безвідповідальним, тому я б не вважав і навіть не приймав, що саме програмне забезпечення є першопричиною проблеми

Вам це не сподобається, але я думаю, що програмне забезпечення є вашою проблемою (хоча я не впевнений, чи це проблема пам'яті чи диска). На жаль, ядро ​​Linux жахливо справляється із ситуаціями високого тиску пам'яті, і, як відомо, в основному потрібна перезавантаження, коли пам'ять вичерпана. Є три речі, які змушують мене вважати, що ваше питання - це виснаження ресурсів:

  1. Ваш диск на кореневих (/) та DATA майже заповнених. Я не впевнений, для чого ви використовуєте DATA, але я вже зіткнувся з проблемами щодо зміни розміру мого кореневого розділу та моєї системи не працює.
  2. У вас високий тиск пам’яті, тобто ваша оперативна пам’ять майже повна. Коли оперативна пам’ять почне заповнюватися, ви почнете отримувати помилки на сторінці. Помилки сторінки трапляються, коли ядро ​​не в змозі виділити достатню кількість пам'яті для процесу і замість цього має використовувати деякі з систем набагато повільніше місця для обміну. Це призводить нас до нашого останнього спостереження:
  3. Ваш обмінний простір майже заповнений. Очевидно, що у вашій системі є високий тиск пам’яті, оскільки оперативна пам’ять і обмін майже повністю заповнені.

В основному, складіть ці три разом, і у вашої системи не вистачає ресурсів, щоб зробити багато чого. Що стосується прикро, як погано Linux обробляє ситуації з низькою пам’яттю (порівняно, скажімо, з ядром NT в Windows), але, схоже, так воно і є. Ви можете знайти більше обговорень у цій темі Reddit та її пов'язаному списку розсилки.

Щодо того, як виправити свою ситуацію, я б сказав, що збільшення розміру свопу - це гарна ідея, але оскільки у вас мало місця на диску, це буде проблемою. Якщо на вашому сервері Minecraft є безліч людей, я думаю, було б безпечно зменшити його пам'ять до чогось приблизно 1024 м (я особисто використовую 1024 м з приблизно 10 людьми, і це працює чудово). Я також використовував би шпильку або папір для вашого сервера Minecraft, оскільки вони, як правило, більш ефективні.

Удачі!


7
Очевидно, що це проблема пам'яті, а не диск. Це правда, що Linux поганий під високим тиском пам'яті. Але це неправда, що потрібна перезавантаження. Якщо вам вдасться звільнити деяку пам’ять, Linux стане таким же чуйним, як і раніше, ніж тиск у пам'яті перевищив наявну ємність.
Жил "ТАК - перестань бути злим"

1
@Kais Я сказав, що "це призводить нас до нашого останнього спостереження", як про страх, оскільки я говорив про своп-простір і продовжував би говорити про це в пункті 3. Про Minecraft, схоже, ви працювали на сервері Minecraft і виділили 3G оперативної пам’яті до нього. Я просто говорив, що, якщо у вас не буде одночасно багато людей, що грають на ньому, вам може не знадобитися стільки оперативної пам’яті. Я сказав, що "вони, як правило, більш ефективні", коли говорити про папір і шпильку, які є альтернативними серверами Minecraft, які відрізняються кращою продуктивністю порівняно з ванільною MC.
Чейз

2
Я чув, що взагалі використання swap - це погана ідея? По крайней мере, в серверному середовищі, коли заморожування протягом 12 хвилин неприпустимо?
9ilsdx 9rvj 0lo

2
@Kais, на мій досвід, Windows ще гірша з програмами, які не є графічним інтерфейсом, але вона призупиняє програми, що не мають переднього плану, якщо тиск у пам'яті високий, що вирішує проблему для робочого столу, припускаючи, що настільні програми не мають фону завдання.
Саймон Ріхтер

2
Можливо, ванільний Minecraft; але великі модпаки легко дістаються до 3 Гб до того, як гравець навіть приєднається :)
Луаан

4

Який результат free -m? Обсяг оперативної пам’яті у вас є безглуздим, якщо ми не знаємо, скільки ви використовуєте. Це і мені цікаво дізнатися, скільки використовується місця для заміни.

Я думаю, що ти відповів на власне запитання. Якщо у вашому браузері відкрити "багато вкладок", ви можете точно уповільнити вашу систему, якщо ви ніколи не закриваєте їх, оскільки вони продовжуватимуть споживання пам’яті незалежно; коли ваша система замерзає, скільки ви відкрили за один раз?

Це також має сенс, якщо ваша система замерзає від інших завдань, що потребують пам'яті, таких як "генерування дуже великого графіка з дуже складної діаграми UML". Це абсолютно сповільнить вашу систему, оскільки вона генерує графік, тому це навряд чи буде несподіванкою.

Це справді звучить так, як це має поводитись ваша система. Або це, або я щось пропускаю тут.

До речі, статистика жорсткого диска не має значення, коли мова йде про те, що ваша система не реагує, оскільки дефіцит пам'яті майже завжди є винуватцем.


1
"Це абсолютно уповільнить вашу систему" - Так, це очікується, але спричинення неконтрольованого сеансу X не очікується (тобто результат замороженої системи), де я не можу побачити переміщення курсору миші.
Кайс

1
Це насправді можна було б очікувати, поведінка, яку ви описуєте, саме те, що відбувається, коли я використовую занадто багато оперативної пам’яті в своїй системі. У мене навіть система була засмічена до того, що я не міг перейти на текстовий термінал, і я отримав подвійну оперативну пам’ять, як і ви. Якщо ви коли-небудь стикаєтеся з таким типом ситуації, коли ви не можете використовувати свій X сеанс, вам доведеться перейти на текстовий термінал і вбити процеси, що порушують вас. Якщо це не вдасться, вам доведеться зробити важку перезавантаження. Але найкраще, що я можу вам сказати.
Зах Санчес

1
@Kais macOS також стає млявим у ситуаціях з низькою пам'яттю. Дійсно немає можливості, щоб система розумно вирішила, яку пам'ять вона абсолютно повинна зберігати в оперативній пам’яті, тому перемикання між додатками замінюватиметься та вимикатись, як божевільний, до того моменту, коли інтерфейс стає невідповідним.
Kusalananda

5
Так, це не так, що не існує набагато ефективніших способів підтримувати інтерфейс інтерфейсу "менеджер вікон". Дослідження MS написало цілу експериментальну ОС на розробці, яка забороняла базування потреб. Доказ концепції: Запустіть "менеджер вікон" в Midori, емулюйте додатки Linux, включаючи своп. Там ви перейдете, "менеджер вікон" залишатиметься чуйним, навіть якщо додатки міняються місцями. Як мінімум, це може дозволити вам надійно вбити деякі програми, щоб звільнити пам'ять. Linux не є ідеальним. Перехід Gnome з X11 на Wayland навіть значно погіршив швидкість реагування на перевантажені системи.
sourcejedi

2
Статистика жорсткого диска може мати значення. Однією з можливих причин невідповідності є несправний диск, який спричиняє величезні відставання вводу / виводу. Але я не бачу жодних доказів того, що відбувається в цій справі.
200_успіх

4

Коли я прочитав заголовок, моя безпосередня думка була «недостатньо оперативної пам’яті», оскільки я відчув саме цю проблему сам в Linux, 10+ хвилин несамовитого обстрілу диска після відкриття занадто багато вкладок браузера. Я погоджуюся, це сумно, і потребує вдосконалення. Windows вирішує цю ситуацію набагато краще.

Деякі пропозиції:

  • Додайте аплет монітора пам’яті до системного трея, щоб ви могли слідкувати за ним.
  • У налаштуваннях Firefox встановіть "обмеження процесу вмісту" на "1". Як зазначено в тексті нижче налаштування: "Додаткові процеси вмісту можуть підвищити продуктивність при використанні декількох вкладок, але також використовуватимуть більше пам'яті".
  • Видаліть або замініть будь-які доповнені браузером доповнення. Зберігайте свій блокатор оголошень, оскільки об’яви споживають більше пам’яті, ніж будь-який блокер.
  • Вивчіть і, можливо, видаліть будь-які інші програми, які потребують пам'яті.

Однак єдине вірне рішення - придбати більше оперативної пам’яті.

Мало того, що велика кількість оперативної пам’яті запобіжить виникненню цієї катастрофи, але й дозволить системі створити великий об’єм файлового кешу в оперативній пам’яті, чого ваша система наразі не може зробити, оскільки вона працює так близько до межі. Великий кеш файлів забиратиме роботу від жорсткого диска і майже загалом робить всі дії в системі швидшими. Воно того варто.


Чудова відповідь, велике спасибі Але щодо "Додаткові процеси вмісту можуть покращити продуктивність при використанні декількох вкладок, але також використовуватимуть більше пам'яті". - Якщо я правильно розумію, чи може Firefox відкривати до 8 процесів на вкладку за налаштуваннями за замовчуванням?
Каїс

1
@Kais Я думаю, що це 1 процес на вкладку. У будь-якому випадку, якщо встановити ліміт у 1, це буде 1 процес усього для всіх вкладок, які повинні використовувати менше пам'яті.
Боан

Зрозумів, ще раз дякую.
Каїс

4

Ваш htop вихід показує, що ваша потреба в оперативній пам'яті вище, ніж її ємність (загальна оперативна пам'ять + SWAP). Тому очевидним першим врахуванням є зменшення використання ОЗУ або збільшення доступності оперативної пам’яті.

Зауважте, що сучасні версії Firefox надзвичайно голодні, завдяки тому, що вікнам / вкладкам надається процес та пам'ять. Ідея полягала у тому, щоб уникнути збоїв у вкладках, не приводячи весь браузер до колін. Воно того варте? Хто може сказати ... У будь-якому випадку, у мене була подібна проблема через вищезазначене, оскільки моя материнська плата Pentium 4 підтримує лише 2 Гб оперативної пам’яті. Щоб уникнути можливих збоїв, виснажених пам'яттю, я додав ~ 800M місця для заміни на запасний SSD, очевидно, маючи намір використовувати його якомога менше. Я домігся цього, змінивши налаштування, відоме як swappiness, яке визначає, наскільки прагне ядро ​​замінювати сторінки пам'яті. Деякі корисні команди наступним чином.

Перевірте поточну заміщення: cat /proc/sys/vm/swappiness

Це цілком може дати результат приблизно 60, що є досить високим для максимальної продуктивності в системах з меншим навантаженням. Для вас, очевидно, це працює неефективно, тому ви можете змінити налаштування за допомогою такої команди, як sysctl vm.swappiness=1змінити налаштування під час роботи системи.

Щоб зберегти ці зміни, вам доведеться шукати файл /etc/sysctl.conf. У цьому файлі змініть значення або додайте рядок vm.swappiness=1.

Майте на увазі, це не є рішенням у вашому випадку, але повинно зробити корисний спосіб вирішення.

Кредити https://askubuntu.com/questions/103915/how-do-i-configure-swappiness

джерело відповіді вище, включає подальше пояснення. Я вважав, що цей пост дуже корисний у моєму випадку.


Дякую за Вашу відповідь. Це здається гарною рекомендацією для налаштування VM.
Кайс

2

Деякі чудові дискусії про те, як проблема викликана, триває та зростає. Мені подобається випереджати такі проблеми, як ви відчуваєте, кидаючи обладнання на початковий дизайн комп'ютера та / або модернізуючи існуючу реалізацію. Ти можеш,

  • додати оперативну пам’ять (32 Гб працює чудово для багатьох установок)

  • замініть жорсткий диск на SSD

  • додайте SSD (твердотільний накопичувач) для накопичувача

  • створити розділ swap в оперативній пам’яті (з 32 і більше ГБ оперативної пам’яті)

  • отримати швидший жорсткий диск

  • перейти до системи з більш швидкою обробкою та ширшою / швидшою архітектурою шини.

Деякі з цих оновлень / замін апаратних засобів можуть коштувати менше 100 доларів США. Це не конкретно для Linux, ані ваші точні реалізації програмного забезпечення, але обладнання, яке ви використовуєте, не здається адекватним вашим завданням.


1
Дуже корисна відповідь, дякую за вказівку на рекомендації щодо заміни обладнання.
Кайс

1
Я сподіваюся, що це допомагає. Не знаєте, який тип комп'ютера чи конкретне обладнання, тому це загальні кроки, щоб, швидше за все, покращитись. Будь-які або всі допоможуть вирішити ваші конкретні сповільнення, які можуть бути спричинені обмолотом кешу, свопом та швидшим та меншим читанням / записом диска в цілому
Старий дядько Хо

6
Більшість із них є гарними пропозиціями, але заміна оперативної пам’яті в основному марна, якщо ви не використовуєте zram або zswap для стисненого переключення на оперативну пам’ять - вони варті, але заміна на нестиснений ramdisk просто створює рівно стільки тиску оперативної пам’яті, скільки знімає ( насправді, дуже трохи більше через накладні витрати).
кас

Я не впевнений, чому хтось мінятиметься оперативною пам’яттю, за винятком випадків стиснення, що здається чудовою ідеєю на робочих навантаженнях з високою ОЗУ / низьким процесором.
Пітер - Відновіть Моніку

1
@bain: як це коли - або краще мати сторінок вивантажено на RAM проти прогнозу по раніше відображається? Вони все ще використовують стільки ж сторінок фізичної оперативної пам’яті, якщо ви не використовуєте стиснення. Ось тут і значення. Єдина відмінність - це більш бухгалтерський облік, але, можливо, більш чисті таблиці апаратних сторінок. Для оперативної пам'яті, яка обробляє в основному нехтування, щоб зняти карту, наприклад, функції / дані, які торкаються лише під час запуску, заміни на диск краще, оскільки він не займає жодного простору DRAM. Для фонових демон, які не використовуються в інтерактивному режимі, затримка не важлива, тому знову перемагає своп диска.
Пітер Кордес

2

Зазвичай це "просто" X11 стає непридатним. Щоб отримати натискання клавіші з клавіатури на програму та запропонувати їй щось відображати на екрані, потрібно виконати код у кількох різних процесах. (X-сервер, щоб отримати натискання клавіші від ядра, xterm або еквівалент, щоб отримати подію і вирішити щось намалювати, а потім надіслати повідомлення на X-сервер, щоб намалювати гліф із шрифту.)

Якщо просто помахати мишкою над вікном із веб-браузером, на якому відображається сторінка з купою Javascript-лайно, це може призвести до купки повідомлень для безлічі процесів, які викликають прокидання цих процесів та торкання купи даних. Імовірно, включаючи купу «кешованих» нестиснених растрових зображень. Тож це велика ймовірність виселити більше речей, які незабаром знадобляться.

ctrl + alt + F2 для переходу на іншу віртуальну консоль, як правило, дає можливість увійти та запустити команди оболонки із затримкою лише на пару секунд, коли щось спричиняє обмін обміну. Це просто bash; ядро Linux не може бути замінено, і воно має весь VT та
клавіатурний <-> TTY-код.


Щоб уникнути уповільнення, коли ви не по-справжньому молотите, може допомогти зменшення «свобідності». наприклад , я поставив /proc/sys/vm/swappinessперебудовується на 6на моєму робочому столі з 16 Гб оперативної пам'яті і розділу підкачки 2 Гб на SSD з NVMe. Ви можете прочитати більше про налаштування інтерактивної затримки (на відміну від пропускної здатності сервера); будь-який посібник згадає про цю зміну.

Але якщо у вас є взагалі будь-який своп, Linux використовуватиме його перед тим, як викликати вбивцю OOM. Зробіть свій розділ swap невеликим , достатньо великим, щоб Linux змогли викреслити справді усталене лайно, яке зазвичай насправді не звикає довгий час. (наприклад, протікає пам'ять!)

У мене не було жодних проблем із тим, щоб своп був повним. Сучасний Linux має справу з обмеженням простору обміну місцями. Хром (який я використовую замість firefox) іноді стає повільним, коли відкриваються десятки вкладок переповнення стека, але The Great Suspender є приємним доповненням для вивантаження вкладок, коли ви їх не використовуєте. Я думаю, що це зекономить для мене значну оперативну пам’ять, хоча вона буде вивантажувати лише вкладки, де ви нічого не ввели в текстове поле. Він також може бути доступний для Firefox.


Як показали інші, 16 Гб оперативної пам’яті дуже приємно для інтерактивного використання з Linux. Ціни на DRAM в даний час відносно низькі ; після шипування близько 1,5 років тому вони в основному знову відхилилися.


Чудова відповідь, дякую купу. Але щодо "купова лайна Javascript може призвести до набору повідомлень для безлічі процесів. Усі вони спричиняють пробудження цих процесів і торкання до них даних" - мені цікаво, що це за процеси, чи є вони Firefox дитячі процеси?
Каїс

@Kais: Менеджер вікон, веб-браузер, X-сервер, можливо, різні інші клієнти X на складнішому робочому столі. І будь-які інші процеси, у вікнах яких ваша миша махає (про що я думав, коли писав це речення). наприклад, у KDE, панель завдань - це окремий процес ( plasma) від kwinменеджера вікон.
Пітер Кордес

Я використовую LXDE, тож у моєму випадку лише Openbox і сервер XOrg - це процеси, які прокидаються? Також які типи повідомлень передаються їм?
Каїс

@Kais: повідомлення протоколу X11 через сокет Unix-домену. Спробуйте запустити xevколись, щоб побачити, які повідомлення ви можете отримати від переміщення миші. Спробуйте strace xevтакож побачити системні дзвінки, що стосуються клієнта.
Пітер Кордес

Я бачу, дякую. Під час запуску xevкоманди я отримую повідомлення лише перемиканням на різні вікна та натисканням на них, але це не так, коли я просто переміщуюсь мишкою.
Каїс

-2

Що може зробити Linux безвідповідальним протягом декількох хвилин під час перегляду певних веб-сайтів?

Ви не користуєтесь правом Linux. Що стає особливо помітним на машині з обмеженими ресурсами. Вам не потрібно більше оперативної пам'яті, ні швидший процесор.

Фон:

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

Щоб "виправити" свою проблему:

Залиште некористувацькі програми в спокої, але почніть змінювати пріоритети (приємні рівні) своїх програм користувача, щоб вони не викликали у вас проблем. Відредагуйте те, що запускає ваші програми, щоб вони включали в себе приємні рівні, починаючи від зазвичай не проблема, до найгіршого злочинця.

Приклади реального світу:

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 як і раніше буде невідповідним протягом декількох хвилин, це буквально проблема купівлі кращої скриньки, але тепер це не спричинить всю вашу ОС (Linux), а все інше, що ви працюєте, також стане невідповідним.


2
Я десятиліттями працював у Linux як із великою кількістю серверів, так і на власній робочій станції (часто в дуже обмежених налаштуваннях VM), і мені не раз доводилося виправляти проблеми, пов'язані з оперативною пам’яттю nice -n. "Вам не потрібно більше оперативної пам'яті" - йому, звичайно, потрібно більше оперативної пам'яті; або може використовувати ulimitдля жорсткого обмеження найгірших порушників, тому його наявна оперативна пам'ять знову достатня. "Ви не користуєтесь правом Linux." повністю вимкнено.
AnoE

І я працював з Linux GUI встановлюється на обмежених ресурсів апаратних засобів в протягом останніх 22 років , і «хороший» ІНГ роботи , щоб вирішити тримати «Linux НЕ відповідає за кілька хвилин.»
Michael

Я не заперечую, що це працює; Я просто говорю , що поставивши його вперед , як на «правильний» спосіб роботи з Linux не може бути краще за все.
AnoE
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.