Виртуальный Каменск

Тематические разделы => Всё о Linux/Unix => Тема начата: 777 от 21 Апреля 2015, 18:10:43



Название: линукс зависает...
Отправлено: 777 от 21 Апреля 2015, 18:10:43
Как бы сделать так, чтобы линукс не зависал?  :help:
При заполнении памяти все начинает жутко тормозить и в итоге приходится выключать компьютер!  wall
Индикатор HDD постоянно горит, рабочий стол обновляется со скоростью 1 кадр в сколько-то минут, переключение на текстовый телетайп не помогает.

Винда ХР (2001 г.) просто снимает проблемную задачу, потом следующую и т.д., в итоге хоть что-то остается работать, а в линуксе вообще ни какого контроля по умолчанию не предусмотрено.
И 10 лет назад так было (ред хат 6, 7), и сейчас так же - ничего не поменялось  :-\


Название: Re: линукс зависает...
Отправлено: Ариец от 26 Апреля 2015, 23:14:33
Что-то мне подсказывает, что дело не в Linux. :smile:

Это нужно умудриться забить 16 гигов ОЗУ.

Из относительно свежей истории на моей памяти Linux сожрал все выделенные 3 Гб ОЗУ только однажды, - при сборке из исходных кодов Thunderbird. Тогда я вспомнил, что у меня есть ещё один не используемый гигобайт ОЗУ и своп раздел на 8 Гб я их задействовал и проблема решилась. :smile: Во всяком случае, на пока...

Путей стероизации GNU/Linux великое множество, но для начала необходимо выяснить, - что у тебя безконтрольно жрёт память?

Код:
ps -axu

или

ps -axuf (ввиде красивого дерева)

free -m

Ну а что касается управления процессами, то стандарт POSIX определяет 28 сигналов (https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D1%8B_%28UNIX%29), которые могут быть переданы процессу из которых для рядового юзеря имеют смысл только 5-6:

HUP, INT, KILL, STOP, CONT и, пожалуй, TERM.

Подробности использования расскажет

Код:
man kill

Также крайне полезным будет вот этот гайд (http://heap.altlinux.org/modules/linux_processes.kirill/index.html) по ручному управлению процессами.


Название: Re: линукс зависает...
Отправлено: 777 от 27 Апреля 2015, 21:15:43
16 гиг заполняются просто - я на вебсервере когда-то поотключал всякие лимиты, в общем это нужно иногда чтоб тяжелый скрипт запустить
И вот бывает, запускашь такой скрипт который жрет 2 гигабайта (сборка xampp 32-битная), потом еще несколько раз, а старые процессы не останавливаются, память не освобождается.

Еще wget например когда работает долго, памяти жрет много, гигабайтами.
Вобщем это наверное не баг а фича, я уже приноровился перезапускать вебсервер, но вообще интересно почему Линукс сам не отслеживает переполнение памяти?


Название: Re: линукс зависает...
Отправлено: Svets777 от 27 Апреля 2015, 22:23:55
Еще wget например когда работает долго, памяти жрет много, гигабайтами.
переустанови да и всё, у меня тоже за 4 года память сожрал, я просто напросто купила переносной жесткий диск, сохранила всю нужную мне информацию и переустановила систему, сразу всё заработало, а так тоже отключаться само собой стало.


Название: Re: линукс зависает...
Отправлено: Ариец от 28 Апреля 2015, 11:44:27
16 гиг заполняются просто - я на вебсервере когда-то поотключал всякие лимиты, в общем это нужно иногда чтоб тяжелый скрипт запустить
И вот бывает, запускашь такой скрипт который жрет 2 гигабайта (сборка xampp 32-битная), потом еще несколько раз, а старые процессы не останавливаются, память не освобождается.

Еще wget например когда работает долго, памяти жрет много, гигабайтами.
Вобщем это наверное не баг а фича, я уже приноровился перезапускать вебсервер, но вообще интересно почему Линукс сам не отслеживает переполнение памяти?


Непонятно. Нужно посмотреть содержимое файлов: /tmp/ps.log и /tmp/free.log

Код:
ps -axuf > /tmp/ps.log

free -m > /tmp/free.log



Название: Re: линукс зависает...
Отправлено: 777 от 28 Апреля 2015, 11:59:09
переустанови да и всё, у меня тоже за 4 года память сожрал, я просто напросто купила переносной жесткий диск, сохранила всю нужную мне информацию и переустановила систему, сразу всё заработало, а так тоже отключаться само собой стало.

Это скорее из профессиональной области вопрос :smile: Про память я имел в виду - оперативную память, а не жесткий диск. Так то сама система не тормозит когда ее специально не нагружать, работает практически как новая.
А wget это специальная программа для скачивания файлов с интернета, и то что она жрет много оперативной памяти это нормально, так и должно быть, когда файлов очень много, вопрос не в ней.
А вопрос к Арийцу такой, можно ли настроить так чтобы Линукс предупреждал при заполнении памяти, и снимал бы процессы автоматически.


Название: Re: линукс зависает...
Отправлено: 777 от 28 Апреля 2015, 12:03:32
Непонятно. Нужно посмотреть содержимое файлов: /tmp/ps.log и /tmp/free.log

Код:
ps -axuf > /tmp/ps.log

free -m > /tmp/free.log



free
Код:
             total       used       free     shared    buffers     cached
Mem:         16079      15708        371          0        444      12183
-/+ buffers/cache:       3080      12999
Swap:            0          0          0

ps.log -> длинная простыня

Ну сейчас то память не забита, вебсервер остановлен, и wget тоже не работает :)
Почему память заполняется я знаю, вот непонятно почему система автоматически не отслеживает ее переполнение.


Название: Re: линукс зависает...
Отправлено: Ариец от 28 Апреля 2015, 12:54:17
На данный момент (справедливо для ядер не старше Linux 3.18.x; как в 3.19.x и 4.0 не знаю, не проверял) у ядра Linux два c половиной штатных планировщика ввода-вывода (IO): Deadline, CFQ и noop.

Есть ещё BFQ, - более современная версия CFQ, но она докупается отдельно: http://algo.ing.unimo.it/people/paolo/disk_sched/patches/3.18.0-v7r7/ (http://algo.ing.unimo.it/people/paolo/disk_sched/patches/3.18.0-v7r7/)

BFQ уже используется по умолчанию в ведроидах, дженту, арче и некоторых других. Но я не знаю, даст ли какой-то ощутимый эффект смена одного лишь планировщика ввода-вывода.

Скорее всего тебе нужно копать в сторону pf-kernel. Там помимо BFQ, уже включена в поставку UKSM и некоторое другое ПО, которое нескоро появится в ванильном ядре. https://pf.natalenko.name/ (https://pf.natalenko.name/)


Название: Re: линукс зависает...
Отправлено: 777 от 28 Апреля 2015, 15:56:34
pf-kernel - написано, что это форк, на v4.0

У меня 3,14.27...
Экспериментировать чё-то неохота на рабочем компе

Раз простых стабильных решений нет, будем ждать может когда-нибудь че-нибудь появится


Название: Re: линукс зависает...
Отправлено: Ы от 07 Мая 2015, 20:09:54
Это нужно умудриться забить 16 гигов ОЗУ.
запускаешь Firefox в 20-30 вкладок с флешевым содержимым и память потекла в неведомое русло ;D


Название: Re: линукс зависает...
Отправлено: Ариец от 08 Мая 2015, 16:42:31
запускаешь Firefox в 20-30 вкладок с флешевым содержимым и память потекла в неведомое русло ;D

так это проблемы flash-player'a и Firefox, а не GNU/Linux. Mozilla Firefox, давно уже не браузер, кстати.


Название: Re: линукс зависает...
Отправлено: 777 от 14 Мая 2015, 17:23:28
Еще один прикол:

$ rm -rf ./каталог_с_файлами/*
bash: /bin/rm: Слишком длинный список аргументов

Оказывается, Линукс больше 64 000 файлов удалять не умеет  ;D
Интересно, это ограничение осталось с 1991 года, или с 1970?

Удалил через коммандер.


Название: Re: линукс зависает...
Отправлено: Ариец от 15 Мая 2015, 19:59:17
Ты неправильно удаляешь файлы с rm из командной строки. ;D Правильно так:

Код:
cd $TARGET; find . -type f -print0 | xargs -0 rm; cd ..; rmdir $TARGET

где $TARGET - каталог, который нужно удалить. То, что написала тебе rm - это стандартная защита от дурака. Она имеется практически во всех GNU core tools. :smile:

P.S. Я написал код в развёрнутом виде, чтобы было понятно что делается. Можно более в сжатой форме... Сам догонишь? ;)

P.P.S. если каталог, предназначенный для удаления содержит вложенные подкаталоги, код сделует слегка изменить:

Код:
cd $TARGET; find . -type f -print0 | xargs -0 rm; find . -type -d -print0 | xargs -0 rmdir; cd ..; rmdir $TARGET


опять же, дано в развёрнутой форме... При желании можно изложить свою мысль системе более кратко...

P.P.P.S. Корень в современных *nix системах ты так просто с помощью rm -rf вообще не удалишь...

P.P.P.P.S. Мой код, не смотря на более длинную форму записи, выполняется ровно в десять раз быстрее твоего.  :-X Можешь проверить на досуге. :-X

P.P.P.P.P.S. Канвейер и рыгэпсы нашё всё... O0 krevedko


Название: Re: линукс зависает...
Отправлено: 777 от 16 Мая 2015, 22:16:50
Саму папку не хотел удалять...

А если нужно стереть все файлы по определенному шаблону, например во всех подкаталогах, в общем типа этого:

rm -rf ./*/*.txt

Тут уже без C++ не обойтись?
Надеялся что попроще решение есть

Еще прикольно, что тут команда "cd ..", вот так где нибудь ошибешься, и оно залезет в домашний каталог и все там поудаляет  :o

З.Ы.

Цитировать
P.P.P.P.P.S. Канвейер и рыгэпсы нашё всё... Афро Йа креведко

Regex ищет быстрее чем wildcards? Вот уж не думал


Название: Re: линукс зависает...
Отправлено: 777 от 16 Мая 2015, 23:33:46
Нашел в интернете:

perl -e 'for(<*>){((stat)[9]<(unlink))}'

написано что в 2 раза быстрее удаляет, чем через find
В следующий раз наверное этот способ попробую.

Ты в этих кракозябрах не разбираешься? Оно ничего лишнего не сотрет?  :smile:


Название: Re: линукс зависает...
Отправлено: 777 от 26 Мая 2015, 17:32:34
Ну вот в КДЕ такое есть, например так навскидку:

1) ALT+TAB иногда залипает - на ЛОРе пишут что нужно отключить свою раскладку для каждого окна (Win95 MODE ON)
2) В режиме Alt+Tab, при выборе мышью - перелистывает сразу через несколько окон. Мелочь вроде но надоедает. Иногда нормально работает
3) В спящий режим иногда не уходит - зависает (сейчас редко, может раз в месяц)
4) Переключение раскладки настроено по Ctrl+Shift, не работает ни одна комбинация Ctrl+Shift+[другая клавиша]
5) Если через проводник создать новый текстовый файл, в нем уже будет заранее добавлено 2 пробела и перенос строки
6) Нет функции прочистки дюз струйного принтера (видимо драйвер такой, но другого нет)
7) В кде 4 первые месяцы был такой "прикол" - выдает что файл уже скопирован (перемещен, заархивирован, ..) а на самом деле оно еще только начинает копировать! В итоге файл источник удаляешь, а он еще не заархивировался, или флешка еще не записалась и т.д.!
8 ) Про DVD и Blu-Ray писать не буду, долго. Тем более сейчас более менее работает
9) На ноутбуке Wi-fi через несколько минут отключается, помогает только перезагрузка (там установлен Xfce).
...
∞) ...

Это то что сейчас вспомнил


Название: Re: линукс зависает...
Отправлено: Ариец от 26 Мая 2015, 20:09:30
Ну вот в КДЕ такое есть, например так навскидку:

1) ALT+TAB иногда залипает - на ЛОРе пишут что нужно отключить свою раскладку для каждого окна (Win95 MODE ON)
2) В режиме Alt+Tab, при выборе мышью - перелистывает сразу через несколько окон. Мелочь вроде но надоедает. Иногда нормально работает
3) В спящий режим иногда не уходит - зависает (сейчас редко, может раз в месяц)
4) Переключение раскладки настроено по Ctrl+Shift, не работает ни одна комбинация Ctrl+Shift+[другая клавиша]
5) Если через проводник создать новый текстовый файл, в нем уже будет заранее добавлено 2 пробела и перенос строки
6) Нет функции прочистки дюз струйного принтера (видимо драйвер такой, но другого нет)
7) В кде 4 первые месяцы был такой "прикол" - выдает что файл уже скопирован (перемещен, заархивирован, ..) а на самом деле оно еще только начинает копировать! В итоге файл источник удаляешь, а он еще не заархивировался, или флешка еще не записалась и т.д.!
8 ) Про DVD и Blu-Ray писать не буду, долго. Тем более сейчас более менее работает
9) На ноутбуке Wi-fi через несколько минут отключается, помогает только перезагрузка (там установлен Xfce).
...
∞) ...

Это то что сейчас вспомнил


Хорошо, есть проблемы? Давай решать.

3. TuxOnIce тебе в помощь. Входит в состав ранее советуемого тебе набора патчей pf-kernel (https://pf.natalenko.name/).

4. У меня переключение раскладок также по Ctrl+Shift. Правда рабочий стол XFCE. Не припомню, чтобы были какие-то проблемы с подобными комбинациями горячих клавиш. Например, в том же The GIMP или Inkscape все комбинации работают на ура, в том числе и Ctrl+Shift+Alt+* . Проставлю как-нибудь на досуге кеды, посмотрю как там.

Вообще-же, проблемы с горячими клавишами иногда бывают, - когда в одном приложении запущено другое приложение (например, стандартная для *nix ситуация - эмулятор терминала + mc, или, например, другой какой-нибудь эмулятор и запускаемое под ним приложение). В таких случаях, одно приложение (как правило, "родительское" окно) просто игнорирует горячие клавиши "дочернего" приложения и отрабатывает свои бинды. В таких случая помогает перенастройка горячих клавиш в одном из приложений. Разработчики "родительских" приложений тоже не лохи и как правило, предоставляют решения для подобных проблем.

7. Это не проблема KDE, это проблема некоторых файловых систем. Решения разные, но где-то в кедах есть галочка - не писать, что файл скопирован, пока он не скопирован. Разработчики KDE тоже не лохи.

9. Надо копать.

Вообще-жа, давай решим эти проблемы, дальше будет видно.