LINUX.ORG.RU
ФорумAdmin

загрузить графические программы в оперативную память на этапе загрузки linux

 


0

2

Если оперативной памяти много - 32 Гига или 64, то при слабом использовании компьютера - сёрфинг в интернете, доковские документы, какие-то небольшие задачи в фотошопе... Оперативная память полностью не будет использоваться. Для ускорения работы можно в память, на этапе загрузки линукс, загрузить все используемые графические программы. Как это делалось в PuppyLinux, во всяком случае раньше, сейчас не знаю.
Подскажите как это сделать? Просто в скрипте, стартонуть все эти программы в фоне? А как тогда сделать что бы при закрытии программы, например libreoffice она закрывала файлы, а сама переходила в фон?
Детали как это сделано в PuppyLinux я не знаю, может там как то по другому всё реализовано. Один раз его устанавливал, libreoffice открывался мгновенно.
Может есть ещё какие нибудь варианты увеличения скорости работы линукс, про аппаратную часть я знаю - ssd, нулевой рейд и т.д. имеется ввиду программные манипуляции.

★★

доковские документы ?

anonymous
()

Если оперативной памяти много

Отдай мне её, пожалуйста.

LongLiveUbuntu ★★★★★
()

Не знаю, поможет ли – либру ускоряю запуском вот такой команды на старте оболочки(в SUSE - настройки\диспетчер настроек\сеансы и запуск, добавляю в вкладку «автозапуск приложений») :

sh -c 'while true; do loffice --quickstart --nodefault --nologo; done'

Помогает ))) Может кто знает решение красивее?

И еще – очень хочу также запихать в память браузер, для хотя-бы вменяемого по времени запуска. Идеи есть?

evilbyte
()

Preload, readahead демоны. Некоторые слишком умные, тогда проще самому написать для мелких программ. Они не запускают, а просто читают с диска, чтобы в кеше сохранились. Некоторые могут еще удерживать в памяти, не давая вытеснить. Но у libreoffice много неиспользуемых ресурсов, которые нет смысла грузить, и тогда эти умные все рассчитают, но может подхватят еще DE.

Если не путаю, то у Puppylinux программы запакованы в архивы, поэтому чтение происходит быстрее, но за счет процессора. Может эти архивы копируются в tmpfs.

boowai ★★★★
()

Про zram почитай и про возможность запуска с нее.

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

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

Огромное спасибо за помощь!

Про zram почитай и про возможность запуска с нее.

Почитаю.

И еще – очень хочу также запихать в память браузер, для хотя-бы вменяемого по времени запуска. Идеи есть?

Пока я его просто в автозапуск добавил. Использую оперу. Она запускается показывая окно... Ещё в автозапуск поставил графический почтовый клиен и konsole. Если всё запускать с hdd то конечно медленно. hdd поменял на ssd - всё намного стало быстрее.

Отдай мне её, пожалуйста.

Не отдам!

v4567 ★★
() автор топика
Ответ на: комментарий от v4567
sh -c 'while true; do loffice --quickstart --nodefault --nologo; done'


Если из консоли запустить вот так:

libreoffice --writer --quickstart

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

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

для этого я и использую бесконечный цикл while true ; do ... done;

в вашем случае:

while true; do libreoffice --writer --quickstart ; done;

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

для этого я и использую бесконечный цикл

Да действительно работает всё отлично.

Тогда получается всё проще простого. Создаём стартовый скрипт где таким образом запускаем все программы которые нужны, каждую в своём цикле и всё....

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

Про zram почитал, вроде бы это не совсем то, что мне нужно.

Я так понял, что в стартовом скрипте в циклах всё позапускать и всё.

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

Это делается через squashfs на /dev/ram0. Но, в любом случае, >>это довольно бесполезная затея.

Особенно если еще и ssd стоит.

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

Ну, может и так, просто не совсем понятна конечная цель, и нужно ли это вообще, на современном оборудовании. Чтобы просто занять RAM? Ну а зачем?) Может ее лучше чем более полезным занять, например - понаделать виртуалок для экспериментов итд?

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

Даже при ssd, по времени заметна разница из оперативки >>стартует программа или из ssd.

Разница безусловно есть, но в большинстве обывательских случаев она не принципиальна и незаметна.

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

…и нужно ли это вообще, на современном оборудовании.

Извините, я нищеброд. Купил себе домик в деревне, на новый комп еще долго денег не будет. У меня CoreDuo 2. Мне теперь что – застрелится?

evilbyte
()
Последнее исправление: evilbyte (всего исправлений: 1)

Оперативная память полностью не будет использоваться

вызывающе неверная информация

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

Ты не превратишь недопроцессор+2гиг озу+отсутствие ssd в 3950X+64гиг озу+NVME SSD залитием чего-то там в оперативку.

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

3gb оперативы. Да, не превращу. Но хотя бы появится возможность им хоть как-то пользоваться. Писать тексты и сайты по фрилансу, да немного програмить для себя. Сейчас сильно тормозит браузер с первым запуском. Последующие – достаточно быстрые. Хотелось бы конечно еще быстрее ))))

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

okular и gwenview никак не хотят в фоне запускаться.

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

Memlockd позволяет важным системным файлам (такие как /bin/login, /bin/getty и командная оболочка администратора) быть размещёнными в памяти, чтобы избежать задержек доступа к исполняемым страницам памяти.

Можно настроить: все проги аблокировать так. Конфиг есть.

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

Всё будет зафиксировано в памяти точно так же, как если бы ты его туда вручную залил. Что тут может быть непонятно?

anonymous
()

Линукс отлично использует файловый кэш в оперативке. Ничего дополнительно делать нет смысла.

У меня 64gb оперативки на сервере где крутится только nginx+apache+mariadb (для одного сайта), exim+dovecot и openfire. Больше ничего на сервере нет. И хотя размер сайта меньше 3Gb - файловый кэш 25Gb в оперативке занимает. Система сама всё правильно сделает. Нет смысла ни в memcache ни в виртуальных дисках в памяти.

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

Извините, я нищеброд. Купил себе домик в деревне, на новый >>комп еще долго денег не будет. У меня CoreDuo 2. Мне теперь >>что – застрелится?

Я не про вас, а про чела-ТС, который не знает чем 64GB RAM занять.

ChAnton ★★
()

Запустить VNC сервер (возможно, от другого пользователя, а то firefox без ключей не захочет рисоваться на рабочем X-сервере), и в нём позапускать то, что должно болтаться в памяти всё время.

berrywizard ★★★★★
()

Ты хочешь вручную заниматься управлением дисковыми кэшами? Не волнуйся, система сама без тебя разберется чем ей забить оперативку. Если очень хочется, можешь всю систему запихать в initramfs, но только сразу предупреждаю, огребешь ты от этого только проблем.

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

Всё будет зафиксировано в памяти точно так же, как если бы ты его туда вручную залил. Что тут может быть непонятно?

И толку с того. Я в оперативку могу и так загрузить. По поводу загрузки в оперативку и нахождения там программы после её закрытия, нажатия на крестик в окне, и корректного закрытия файлов отлично работает решение предложенное evilbyte. Сейчас проблема в том например, что okular и gwenview запускаясь в фоне выводят изображение своего окна на дисплей.

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

Ты хочешь вручную заниматься управлением дисковыми кэшами? Не волнуйся, система сама без тебя разберется чем ей забить оперативку.

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

v4567 ★★
() автор топика
$ du -hs /usr/lib
3,5G    /usr/lib

Объем небольшой, я думаю можно на ramfs разместить.

anonymous
()

вы таки будете смеятца, но в миру линукса возможно фсё…

ZRAMRAID или как разогнать виртуальный том без потери данных.

Данный проект является производной всех тех экспериментов с использованием виртуализации XEN\KVM, который мы начали еще в 2012г. Тогда нам очень не нравилась скорость работы дисковой подсистемы в режиме HVM для сервера WINDOWS 2003.

В процессе поиска решений вспомнили о модуле zram и первым делом сделали виртуальный раздел для swop. Безусловно определенно работать OS WINDOWS в «таком» окружении стала быстрее, точнее стала более «отзывчивее», но недостаточно для серверных задач. Вот тогда у нас и родилась идея сделать так называемый виртуальный RAID, который мы и назвали от производной zram —> ZRAMRAID. Идея собственно проста, создаем блочное устройство из области памяти с применением модуля ядра zram, по размеру одинаковое с образом диска для виртуальной машины, после чего объединяем оба носителя в RAID массив и уже готовый RAID (MD) отдаем виртуальной машине в XEN или KVM как носитель для работы с данными.

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

VNC (может ошибаюсь) то же не совсем то. Получается так, что вывод будет но на другой дисплей и что бы поработать в какой то графической программе запущенной таким образом надо будет подключаться к vnc серверу.
насколько я понял в большинстве своём графические программы запустить в фоне без вывода на какой нибудь, в том числе и виртуальный, терминал не получится. Хотя некоторые, например: libreoffice --writer --quickstart --nologo запускается в фоне без проблем.
По поводу Memlockd я не сразу понял глубину мысли. Может ошибаюсь, но если применить Memlockd то порядок действий будет следующий. Запускается графическая программа, она выводит своё изображение на дисплей, потом при помощи Memlockd в оперативной памяти фиксируются как бы её данный и она сама. Потом она закрывается, а в оперативной памяти в результате Memlockd остаётся. И следующий запуск будет производится с жёсткого диска, но в результате её сохранения в оперативке этот запуск будет намного быстрее чем если бы она запускалась просто с жёсткого диска. Правильно я понял?

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

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

Чувак, ты вообще в курсе что такое «дисковый кэш»?

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

Чувак, ты вообще в курсе что такое «дисковый кэш»?

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

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

сильно. все файлы кешируются.
в том числе и программный код исполняемых файлов.
т.е. програмный код, закончившей выполнятся програмки, не удаляется из памяти, а отмечается недействующим и так висит, пока кому другому не понадобится ram, тогда из индекса кешированных фалов отметки удаляются и память передается потребовавшему процессу.

в либре, я так понимаю, просто сделали спец.функцию, которая заставляет операционку закешировать все наиболее важные куски программного кода либры в ram. и запуск либры после онного проходит мгновенно.

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

Да в курсе.

Тогда расскажи в чем разница между «программа находится в оперативной памяти» и «программа находится в дисковом кэше».

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

Я понял так, что morse говорит про кеш жёсткого диска. Он в данном случае ни как не пригодится. Если речь идёт про кеш в оперативке, то да, после первого запуска, последующие будут проходит значительно быстрее. Но речь идёт о первом запуске, первый запуск будет происходит образно говоря медленно, поэтому весь вопрос в том что бы после загрузки линукс позапускать все нужные программы. Точно не скажу но может быть можно обойтись и без Memlockd. По поводу либры, после запуска речь не идёт о сохранности её кеша, она сама будет в оперативной памяти и не будет выводит своё окно на дисплей пока не запустить её через графическое меню.

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

Да нафига оно вообще надо на современном железе с ssd. Мало обычного, воткните еще nvme ssd.

У вас комп перезагружается наверное не более одного раза в день. Если 24/7 работает, то тем более. Или вы каждый час рабочую машину ребутаете? Правильно говорят, что дисковый кеш все за вас сделает.

Всякие там tmp в tmpfs, кеш браузера можно туда же смонтировать (если 24/7).

Сейчас посмотрел - тот же libreoffice стартует менее чем за 3 сек (первый старт), браузер моментально.

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

Тогда расскажи в чем разница между «программа находится в оперативной памяти» и «программа находится в дисковом кэше».

Если программа запущена и находится в оперативной памяти, то эти данные никогда не будут удалены пока программа работает. В процессе работы программы данные могут изменяться.
Если программа прекратила свою работу, (например мы закрыли какую нибудь графическую программу), то данные сохраняются в оперативной памяти. В таком случае повторный запуск бует происходить значительно быстрее. Эти данные не будут изменяться, так как программа не работает и при нехватке оперативной памяти могут быть удалены.

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

Вообще zfs под описание подходит неплохо. Кэширует оно поудачней обычного ядерного кэша. Нужно только подоткнуть первоначальный silent запуск нужных прог, далее всё будет сидеть в памяти.

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

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

Кажется, я понял, что вы имеете в виду, но не можете подобрать слова. Вам хочется, чтобы программы стартанули, прочитали свои конфигурационные файлы, то есть настроились и ждали их вызова на интерактивную работу? Но тут проблема может быть как раз в том, что мало кто делает такой функционал, собственно именно офис наверное из популярных только и сделал, так как там это было настолько явно, что таки смилосливись. Для остальных программ тогда придётся мириться с их «окном».

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

Кажется, я понял, что вы имеете в виду, но не можете подобрать слова. Вам хочется, чтобы программы стартанули, прочитали свои конфигурационные файлы, то есть настроились и ждали их вызова на интерактивную работу?

Совершенно точно. Я по моему вразумительно про это раньше и говорил.

Но тут проблема может быть как раз в том, что мало кто делает такой функционал, собственно именно офис наверное из популярных только и сделал, так как там это было настолько явно, что таки смилосливись. Для остальных программ тогда придётся мириться с их «окном».

Теперь понятно, что да.

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

По поводу VNC - неправильно. Никуда подключаться не надо, нужно чтобы необходимые программы были просто запущены, и, образно говоря, их код уже был в памяти. Если, как я сказал, запустить их от другого пользователя, потери по времени будут в распределении динамической памяти и инициализации динамических данных (в том числе статических), код и константы будут уже наготове.

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

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

anonymous
()

Для ускорения работы можно в память, на этапе загрузки линукс, загрузить все используемые графические программы

Добавить в автозапуск с галочкой «запускать свернутыми».

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

berrywizard У меня vnc использует -display :0 который использует рабочий стол. Рабочий стол у меня запущен один. Получается окна всё равно будут выведены на экран. Я извиняюсь но не могли бы Вы немного по подробней описать как при помощи vnc всё это можно осуществить?

v4567 ★★
() автор топика
Последнее исправление: v4567 (всего исправлений: 1)
17 декабря 2019 г.
Ответ на: комментарий от v4567

Немного корёжим штатный $HOME/.vnc/xstartup, у меня в CentOS/7 он такой:

#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
/etc/X11/xinit/xinitrc
vncserver -kill $DISPLAY
в что-то вроде этого:
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
if [ -f $HOME/.vnc/xstartup:$DISPLAY ]; then
  exec $HOME/.vnc/xstartup:$DISPLAY
fi
/etc/X11/xinit/xinitrc
vncserver -kill $DISPLAY

Исходим из того, что это всё нужно для пользователя vasya, а экран X-сервера предзагрузки у нас будет 10, тогда создаём $HOME/.vnc/xstartup:10, в котором накидываем прграммы, которые должны сидеть в памяти:

#!/bin/sh

# vvv   вот эти программы
/usr/bin/xclock &
/usr/bin/xterm &

# vvv   на случай, если захочется что-либо из запущенного прибить, тыкая мышой
/usr/bin/twm

Для 7-го CentOS'а затем от root'а:

sed -r -e 's!<USER>!vasya!g' /lib/systemd/system/vncserver@.service > /lib/systemd/system/vncserver@:10.service

затем

systemctl enable vncserver@:10.service; systemctl start vncserver@:10.service

Для 6-го CentOS'а корёжим /etc/sysconfig/vncservers:

VNCSERVERS="10:vasya"
VNCSERVERARGS[10]="-geometry 1024x768 -depth 16 -localhost"
и затем
chkconfig --level 345 vncserver on; service vncserver start

Должно заработать.

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