bytebuster: (ITCrowd-Moss)
[personal profile] bytebuster
Капець.
В Лінуксовому ядрі, починаючи з 2007 року, сидить бага, яку ніяк не можуть відловити.
Якщо система вижирає усю RAM+swap (або просто RAM, якщо своп вимкнено), все мерзне насмерть. До красної кнопки.
Пісєц же! У вінди навіть приснопам'ятної 95-ї все було нормально. Ну, гальмувало, але ж не висло до фізичного ресету!

Баг від 2007: System freeze on high memory usage
Численні реінкарнації:
2013: System freeze on high memory usage
2015: System freeze/restart on high memory usage
AskUbuntu.SE: Computer freezing on almost full RAM, possibly disk cache problem

Так це ще не все! Виявляється, що воно ще й страждає від фрагментації своп-файлу! Йоханий бабай, а я-то думаю, чому у мене iotop показує 700kb/s швидкості свопа при страшенному шарудінні механічним винтом…
Unix&Linux.SE: How can swapoff be that slow?

Йомайо, як так можна жити?! Ці дєтські болєзні вінда вилікувала ще у минулому тисячолітті, блін! І клава/миша лишалися responsive під час навіть сильного свопу (особливо, якщо UDMA; ну так 21 століття на дворі).

Карочє, я в афігєнії. Як люди з цим живуть?!

Натомість, відкрив для себе zram та irqbalance. Тепер на 8 Гб фізичних до свопу не лізе навіть при використаних 11 Гб. Хоч щось.

...

Дата: Вівторок, 20 Червень 2017 05:36 (UTC)
balu: (Default)
Від: [personal profile] balu
Якщо система не вміє менеджерити основний ресурс компʼютера
У мене є один старий лінуксовий сервачок, ще на HDD. У нього аптайм близько року. Віндовий сервак доводиться перегружати раз в 1-3 місяці бо, інакше, MS SQL тормозить, а перезапуск служби не допомогає. В лінукcові я, на крайній випадок, зроблю killall -9 і процес вивільнить пам'ять. Що зробити у вінді?

Замість того, щоб вичистити багу, яка там сидить принаймні десятиліття.
Бо вон мало кого турбує.

...

Дата: Середа, 21 Червень 2017 05:42 (UTC)
balu: (Default)
Від: [personal profile] balu
Там швах був по іншій причіні, а не тому, що потрібен був резет через усю вижрану пам'ять. На практиці, регулярний великий своп - це привід докупити пам'ять або оптимізувати ПЗ.
І так, за 15 років роботи на лінуксі я жодного разу не натиснув резет тому, що вижерло всю пам'ять.

...

Дата: Вівторок, 20 Червень 2017 05:20 (UTC)
balu: (Default)
Від: [personal profile] balu
Якщо система вижирає усю RAM+swap (або просто RAM, якщо своп вимкнено), все мерзне насмерть. До красної кнопки.
а як система повинна реагувати, коли вичерпано всю пам'ять? Покажи best practices. Зауважу, що варіант "гальмувало, але працювало" актуальний якщо є куди писати своп.

Виявляється, що воно ще й страждає від фрагментації своп-файлу!
Це властиво для механіки. У вінді є та ж проблема і вона не вирішується стандартними засобами.

Як люди з цим живуть?!
Бо це не є проблемо. Особливо з появою дешевої оперативної пам'яті та ssd.
Змінено Дата: Вівторок, 20 Червень 2017 05:31 (UTC)

...

Дата: Середа, 21 Червень 2017 05:37 (UTC)
balu: (Default)
Від: [personal profile] balu
Відбивати malloc?
Не варіант, оскільки нема можливості нормальної обробки такої ситуації.
Падати аплікаціями?
Якими саме аплікаціями, бо їх може бути тисячі? Я б волів щоб була червона кнопка, замість довільних незрозумілих падінь.

Так, що миша не рухається.
Миша не рухається по тій причіні, що у графічної підсистеми такий же приорітет, що і у іншого користувацького процеса. У мене таке теж буває, як процесор завантажений на 100%. На вінді таке саме. Що на вінді краще - миша менш чутлива до тормозів через роботу з винтом, але описане тобою трапляється під час мережевих затримок.

Лінух такий усічка-пусічка, працює на 512М памʼяті і не страждає.
Дивлячись який лінух. У мене вже давно 16Г стоїть.
Змінено Дата: Середа, 21 Червень 2017 05:49 (UTC)

...

Дата: Середа, 21 Червень 2017 09:35 (UTC)
balu: (Default)
Від: [personal profile] balu
Процес отримує malloc()=null, а далі якщо програмер не лінивий, то обробляє
1) Для корректної обробки вже нема пам'яті, у тебе вона вся вижрана. 0 байтів вільно.
2) Зараз купа програм написана на мовах, що самі керують пам'яттю.

Окей, червона кнопка + штатний засіб індикації аварійного стану?
Гном 2 мені колись щось таке пропонував, коли своп майже закінчився.

...

Дата: Середа, 21 Червень 2017 10:18 (UTC)
balu: (Default)
Від: [personal profile] balu
В любому випадкові ми впираємось в:
1) вичерпання пам'яті - це аварійна ситуація, яка потребує реакції і від ОС, і від розробника.
2) далеко не всі програми взагалі матимуть змогу цю ситуацію коректно обробити.

Враховуючи те, що така ситуація досить рідкісна, то з цим можна не морочитись і робити більш цікаві задачі.

...

Дата: Четвер, 22 Червень 2017 05:42 (UTC)
balu: (Default)
Від: [personal profile] balu
Там, де є нестача якогось ресурсу неодмінно формуються певні практики розробки. Наприклад, в мобайл девелопменті це червоною ниткою проходить через архітектуру програм.
Якщо говорити про проблему обробки раптової нестачі пам'яті, то у юнікс-культурі не сформувалось відповідних практик. Навпаки, з самого моменту появи юніксів широко розповсюдженою практикою було використовувати мови, де програміст не турбувався про керування пам'яттю (дивись Unix Way).

...

Дата: П'ятниця, 23 Червень 2017 07:08 (UTC)
balu: (Default)
Від: [personal profile] balu
1) Оброби таке на bash-ові
2) Власне ти і підкреслив мою тезу: там, де це є дійсною проблемою, там і обробляється.

...

Дата: П'ятниця, 23 Червень 2017 13:32 (UTC)
balu: (Default)
Від: [personal profile] balu
Баш — не мова програмування. Це високорівнева, скриптова мова.
І що? Це все рівно мова, причому, Тьюрінг-повна. На якій написано тони коду. А те, що воно потребує інтерпретатора не є аргументом.

Де обробляється?
Наприклад, в java я задовбуюсь орбробляти потенційні проблеми з, наприклад, файловою системою. В Python теж автоматично обробляються такі випадки.

...

Дата: Середа, 21 Червень 2017 09:38 (UTC)
balu: (Default)
Від: [personal profile] balu
У мене миша не рухалась коли проц на 100% зайнятий розрахунками.

Я у вінди не бачив мерзлої миші з моменту
Не так давно я бачив мерзлу клаву на сімці.
Сторінку створено Субота, 14 Лютий 2026 18:00

Грудень 2025

П В С Ч П С Н
1234567
891011121314
15161718192021
22232425262728
2930 31    
Створено з Dreamwidth Studios

За стиль дякувати