LINUX.ORG.RU

Уменьшить io

 , , , ,


1

2

Имеется ноутбук с 8 ГБ RAM. Хотелось бы всё необходимое переносить в оперативку, чтобы никто не дёргал винт и можно было бы спокойно его отключать (в смысле, hdparm -S, hdparm -B).
В iotop постоянно мелькает kworker и jbd, как избавиться от всего остального - хотя бы имею какое-то представление.
Подумывал перенести часто используемый софт в chroot, но это некрасивое решение - будет отъедаться больше памяти.
Посоветуйте что-нибудь...
Конфиг ядра: http://pastebin.com/GFCGxFKc
rc-update: http://pastebin.com/Rh5vkkSf
Конфиги laptop-mode: http://pastebin.com/FszDBTts
/etc/local.d/powersaving.start: http://pastebin.com/8n1UZLCc

★★★

kworker

ядро

jbd

журнал ФС

с первым ты ничего не сделаешь, а журнал можно отключить (если не боишься потерять данные).

// решение твоей проблемы заключается в приобретении SSD.

science ★★☆
()
Последнее исправление: science (всего исправлений: 1)
Ответ на: комментарий от science

Перемонтировал разделы с commit=600, jbd стал реже появляться (должно быть так - я его пока вообще не замечал), но на форумах жалуются на то, что почему-то если настроить этот параметр в /etc/fstab, он сбрасывается в 0. Над отключением ещё подумаю...

batekman ★★★
() автор топика
Ответ на: комментарий от batekman

он сбрасывается в 0

Кто-то не осилил настроить laptop-mode-tools

xorik ★★★★★
()
Ответ на: комментарий от batekman

но не люблю решать проблемы таким способом

Так это единственное решение. Будет абсолютно тихо, жрать будет меньше. Из коробки.

Ставишь систему + хомяк на SSD, всё остальное на HDD в HDD-caddy заместо DVD-привода. HDD ставишь на hdparm -S 15 и готово.

science ★★☆
()
Ответ на: комментарий от batekman

Десктоп неудобно с собой таскать

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

drBatty ★★
()
Ответ на: комментарий от science

Пока хотелось бы обойтись RAM, но за совет спасибо

batekman ★★★
() автор топика
Ответ на: комментарий от batekman

Я просто хочу запихать все часто дёргаемые файлы в RAM - что тут такого?

дык от этого твоей батарейке только хуже будет. И вентилятору тоже.

drBatty ★★
()
Ответ на: комментарий от Deneb

Оставь оптимитизатора в покое, сам на опыте поймет

да...

drBatty ★★
()
Ответ на: комментарий от drBatty

Хранение данных в оперативке ест больше, чем разгон винта и его активное состояние? Не замечал...

batekman ★★★
() автор топика
Ответ на: комментарий от Kroz

Есть и такой вариант, но мне бы хотелось не пихать в оперативу всё подряд, а только то, что часто дёргается
Пример: смотрю видео - можно бы всё сразу загрузить и смотреть, но нет - буферизация идёт по мере просмотра, а если настроить, чтобы буферизовался больший кусок видео, то придётся ждать перед началом просмотра. Особенно раздражает, когда лагает просмотр видео с DVD после снятия с паузы, хотя DVD это уже прошлый век

batekman ★★★
() автор топика

man ionice (но оно это не решение проблемы, а, скорее, способ уменьшить обращение к диску).

Ещё есть мгновенный 100% способ:
echo 1 > /sys/block/sda/device/delete
Но после этого не получится запустить новые программы с этого диска.
Кстати, может кто-то знает, можно как-нибудь вернуть диск без ребута?

То, что тебе нужно, скорее всего, монтирование корня в RAM

teod0r ★★★★★
()
Ответ на: комментарий от batekman

Хранение данных в оперативке ест больше

да.

чем разгон винта и его активное состояние? Не замечал...

ну дык занимайся, никто же не против. Смонтируй в tmpfs всё, в чём проблема? Заметь.

drBatty ★★
()
Ответ на: комментарий от batekman

Особенно раздражает, когда лагает просмотр видео с DVD после снятия с паузы

Есть и такой вариант, но мне бы хотелось не пихать в оперативу всё подряд, а только то, что часто дёргается

Мне кажется, что есть проблема с постановкой задачи.


А что дергается? Ты пытался проанализовать какие файлы нужны для работы и сколько они занимают? Вот ориентировки:
1) У меня 2 гига памяти, и Knoppix у меня отлично грузился и работал из памяти.
2) Только что подсчитал:
/usr (без include, local, portage, src): ~4G
/bin /sbin /lib / /opt /etc


И почему chroot тебе казался приемлемым решением; ведь RMA-диск это такой себе аналог chroot'а?

можно забросить в RAM.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

А что дергается? Ты пытался проанализовать какие файлы нужны для работы и сколько они занимают?
/usr (без include, local, portage, src): ~4G
/bin /sbin /lib / /opt /etc

Эти места нужны для запуска программ, разгон винта во время запуска не так беспокоит (за исключением базовых консольных команд и bash-completion)

И почему chroot тебе казался приемлемым решением; ведь RMA-диск это такой себе аналог chroot'а?

Чтобы chroot был в RAM'е, его надо положить на рамдиск - разве нет?

batekman ★★★
() автор топика
Ответ на: комментарий от teod0r

монтирование корня в RAM

у меня

/dev/sda4 	/		 tmpfs 	   defaults,noatime,nodiratime,data=writeback        0	  2
разницы пока особо не заметил

smilessss ★★★★★
()
Ответ на: комментарий от batekman

Эээ... Предыдущее сообщение было отправлено по ошибке. Вот то, что я хотел отправить.

Есть и такой вариант, но мне бы хотелось не пихать в оперативу всё подряд, а только то, что часто дёргается

Почему chroot тебе казался приемлемым решением, а RАM-диск (по сути аналог chroot) - не приемлем?

И - а что дергается? Ты пытался проанализовать какие файлы нужны для работы и сколько они занимают? Вот ориентировки:
1) У меня 2 гига памяти, и Knoppix у меня отлично грузился и работал из памяти. Значит более-менее комфортную систему можно поместить в 1-2G.
2) Только что подсчитал:
/usr (без include, local, portage, src): ~4G
/bin /sbin /lib /opt /etc : 162M
И это у меня кеды, LibreOffce, Firefox, и полный фарш.
Мне кажется, что редко у тебя будут задачи, требующие оставшиеся 8-4=4G памяти.

Что скажешь?

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от batekman

Чтобы chroot был в RAM'е, его надо положить на рамдиск - разве нет?

Ну так и положи - на этапе initrd. Тогда настоящий корень не обязательно нужно будет монтировать.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

RАM-диск

chroot в RAM-диске я себе представляю, а вот что ты имеешь ввиду - как-то не очень

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

Я знаю, как посмотреть, кто юзает io, а какой файл вызывается при этом - нет

И это у меня кеды, LibreOffce, Firefox, и полный фарш.
Мне кажется, что редко у тебя будут задачи, требующие оставшиеся 8-4=4G памяти.

Пожалуй, так...
Кажется, я запутал себя и других, так что надо разобраться:
1. Есть файлы, которые загружаются в память при запуске таких программ, как chromium, VirtualBox, deadbeef etc. (всякие либы) - они меня не беспокоят;
2. Есть служебные файлы, которые этими программами периодически дёргаются. Профили браузеров пихает в RAM сервис psd, логи - vartmp. Так что тут нет проблем;
3. Есть пользовательские файлы, которые приходится периодически считывать во время использования - музыка, видео, каталоги с изображениями;
4. Есть базовые консольные команды; скрипты на хоткеях, bash-completion - вот последние 2 пункта меня и беспокоят.
Но хотелось бы найти или придумать такое универсальное решение, которое полностью запретит использование HDD без крайней на то необходимости, потому и начал тему.

batekman ★★★
() автор топика
Ответ на: комментарий от batekman

chroot в RAM-диске я себе представляю, а вот что ты имеешь ввиду - как-то не очень

ничего сложного, просто правильно запиленный initramfs. Правда загружаться девайс будет оооочень неспешно - пока скопирует всё в tmpfs... :-)

Pinkbyte ★★★★★
()

Ман preload

anonymous
()

Попробуй затормозить шедулер, увеличив размер очереди в /sys/block/sda/queue/nr_requests

Deleted
()
Ответ на: комментарий от batekman

Чтобы не шумел

Нежные уши?

и батарейку не кушал

Ты жжёшь батарею в десятки раз больше яркостью подсветки диспеля и работой ЦП, чем жестаком.

Deleted
()

Уменьшить io

ё, меньше уже вряд ли получится.

anonymous
()
Ответ на: комментарий от Deleted

в десятки раз больше

В использовании батареи нет ботлнеков, она исчерпаемый ресурс.

anonymous
()
Ответ на: комментарий от Deleted

Нежные уши?

Да, и отвлекаюсь, когда HDD скрипит

Ты жжёшь батарею в десятки раз больше яркостью подсветки диспеля и работой ЦП, чем жестаком.

На нужное не жаль

batekman ★★★
() автор топика
Ответ на: комментарий от darkenshvein

Чтобы узнать, не упускаю ли я чего важного, не отключая винт. Узнал. Не упускаю (SSD не шумит, а электричества много не сэкономишь). А зачем ты спросил?

beresk_let ★★★★★
()
Ответ на: комментарий от beresk_let

Чтобы узнать, не упускаешь ли ты чего важного, не отключая винт.

darkenshvein ★★★★★
()
Ответ на: комментарий от batekman

Ты жжёшь батарею в десятки раз больше яркостью подсветки диспеля и работой ЦП, чем жестаком.

На нужное не жаль

ты прям как моя тёща, которая всю пенсию пропивает, но на спички у неё денег нету. Экономить надо на том, на что больше всего ресурсов тратится. Если цель — экономия, а не понты.

Да, и отвлекаюсь, когда HDD скрипит

уже говорил — купи SSD.

drBatty ★★
()
Ответ на: комментарий от teod0r

echo 1 > /sys/block/sda/device/delete
Кстати, может кто-то знает, можно как-нибудь вернуть диск без ребута?

for S_HOST in `ls -d /sys/class/scsi_host/host*`; do
 echo "- - -" > $S_HOST/scan
done

Диск с рутовым разделом не пробывал отключать.

DiMoN ★★★
()
Последнее исправление: DiMoN (всего исправлений: 1)
Ответ на: комментарий от DiMoN
echo -n "- - -" |tee /sys/class/scsi_host/host*

или 

for S_HOST in /sys/class/scsi_host/host*; do
  echo -n "- - -" > $S_HOST/scan
done
anonymous
()

чтобы никто не дёргал винт и можно было бы спокойно его отключать

Думаю нужно начинать с (отключения/переноса в tmpfs) всех log

TEX ★★★
()
Ответ на: комментарий от TEX

На десктопе туда пишется раз в день.

anonymous
()
Ответ на: комментарий от batekman

Давай я изложу свое видение.

Есть два пути:
1. Поместить ОС в память полностью. Достоинства: просто реализовать; максимально уменьшает обращения к HDD (в частности, через bash-completion). Недостаток: много кушает памяти (но в твоем случае это не так актуально). Как: мануалы которые я высылал.

2. Поместить компоненты ОС в RAM выборочно. Достоинство: мало кушает памяти. Недостатки: сложно реализовать. Как: смотреть обращения к файлам, переносить их на RAM диск, каталоги можно «совмещать» или «склеивать» - есть такие FS (AFAIK unionfs, aufs и т. п.).

Я бы рекомендовал первый путь, как самый быстрый и проверенный. Потом, если будет время и желание, мигрировать на второй (хотя непонятно зачем).

Список открытых файлов (ты задавал вопрос) можно смотреть с помощью lsof. Но лучше как-то получить доступ к данным, которые собирает preload; оно как раз и собирает частоту обращения в файлам.

Что до обращениям к диску (в топике темы) - я бы смотрел через lsof какие файлы открыты не из RAM-диска, вангую что что-то есть в /tmp, /var, что-то в хомяке, может есть периодическое обращение к /etc или /usr/share. Если же все, что выдает lsof уже находится в памяти, тогда уже надо думать.

(продолжение следует: ограничения корпоративного прокси)

Kroz ★★★★★
()
Ответ на: комментарий от batekman

Что до долгой загрузки: да, будет иметь место, ну, думаю, здесь следует пользоваться Suspend-to-RAM (в идеале) или suspend-to-disk (желательно со сжатием - для скорости); или suspend to both.

А еще есть третий и четвертый путь:
3. использовать SSD (заменить HDD на SSD или поставить SSD вторым)
4. использовать SSD как кеш для HDD; актуально если SDD сильно маленький.

По-моему, это удовлетворяет твое ТЗ.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от Kroz

1. Поместить ОС в память полностью. Достоинства: просто реализовать

Т. е. развернуть gentoo в initrd? Просто у меня rootfs занимает 22G, и ещё /var - 24, не говоря уже о хомяке

Список открытых файлов (ты задавал вопрос) можно смотреть с помощью lsof.

Открытых-то да, а вот считываемых в конкретный момент с HDD?..

2. Поместить компоненты ОС в RAM выборочно.
получить доступ к данным, которые собирает preload; оно как раз и собирает частоту обращения в файлам.

В любом случае, если не помещать всю ОС на рамдиск, то она обязательно найдёт, чем бы ей HDD дёрнуть, так что в этом варианте проще использовать сам preload или readahead-list - я прав?

3. использовать SSD (заменить HDD на SSD или поставить SSD вторым)

Меня в этом варианте отпугивает только ковыряние в ноутбуке - я этим никогда не занимался

[root] ~ # head -n1 /var/log/Xorg.0.log
[    24.262]
и вот это не радует

batekman ★★★
() автор топика
Ответ на: комментарий от batekman

Т. е. развернуть gentoo в initrd?

Нет. Initrd будет создать RAM-диск в памяти и копировать туда с HDD те части, которые должны быть в памяти. Потом корень будет туда монтироваться. В мануале все описано.

Просто у меня rootfs занимает 22G, и ещё /var - 24, не говоря уже о хомяке

Я уже писал, что там максимум 4-4.5G. Ты посмотри сколько у тебя занимает portage, исходники ядра и т. п - их не нужно держать в памяти.

В любом случае, если не помещать всю ОС на рамдиск, то она обязательно найдёт, чем бы ей HDD дёрнуть, так что в этом варианте проще использовать сам preload или readahead-list - я прав?

Да, я тоже так считаю. Поэтому и не рекомендую этот вариант.

Меня в этом варианте отпугивает только ковыряние в ноутбуке - я этим никогда не занимался

Ну, это решабельно. Или найди кого-то, кто не испугается (я пробовал: муторно, но not a rocket science). Или, если в качестве второго, и у тебя съемный DVD привод - вообще ковыряться не нужно: вытащил DVD-привод, вставил креддл с SSD.

Моя рекомендация: если готов потратиться - SSD вторым приводом (на нем будет корень), или даже единственным; если без затрат - грузить в память всю ОС.

Kroz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.