The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск systemd 217 c реализацией консоли в пространстве поль..."
Отправлено Ordu, 29-Окт-14 18:49 
>[оверквотинг удален]
> 1. Если в текстовой консоле - нет.
> 2. На 1 CPU иногда и больше: shell -> xterm -> xorg.
>    Ну один точно shell -> xterm. Если этот символ
> '\n'.
>    или терминал в RAW.
>    Собственно этот режим и предлагает kmscon:
>    shell -> kmscon. Тоесть отвечая на свой вопрос ДА.
> 3. Нет.
> PS. Я имел ввиду не юзерспейс-ядерный контекст, а переключение
> задач, что накладней. Сорри, за путаницу.

Вы же, по-моему, понимаете, что переключение контекстов происходит не на каждый символ, а на каждый вызов fflush из stdio.h или подобного вызова из подобной библиотеки. Никто не откючает юзерспейс-буферизацию. По-умолчанию (glibc'овые настройки буферизации для stdin/stdout/stderr), переключения контекстов происходят на каждую выведенную строчку. В сложных же случаях (например, вывод через ncurses) буферизация происходит сложнее, и эти сложности отражаются на прикладном коде, который использует ncurses.

Я отмечу, между прочим, что я давно переключился с работы в консоли на иксовые эмуляторы терминалов, потому что они меньше нагружают процессор. Когда я только познакомился с линуксом, меня пёрло сидеть именно в консоли, потому что ностальгия и синдром утёнка -- мой первый опыт общения с компьютером прошёл в текстовом режиме. Но и тем не менее я пользовался X'ами, и со временем заметил такую особенность консоли -- что она может замедлить процесс компиляции пакета, просто потому что куча вывода в консоль. Вы можете проверить это элементарно:

cd /usr/src/linux/kernel
f=`ls -S | head -n 1`
time cat "$f"
sleep 1; time cat "$f"

Когда последнюю команду вгоните, нажмите Enter пока sleep работает и тут же тыкните в Alt-f2, подождите немного и вернитесь обратно. Можете затем, интереса ради, проделать то же самое в urxvt/xterm или каким там вы эмулятором терминала пользуетесь. Выпишите все эти цифры, посмотрите на них, и подумайте, что же всё-таки больше тормозит систему: переключения контекстов или ядерная реализация виртуальной консоли.

1. В ядро никто не будет пихать кучу сложностей для того, чтобы сделать консоль быстрее: для консоли скорость важнее надёжности. Кроме того под каждую видеокарту придётся писать свой набор "сложностей".
2. Переключения процессов происходят не на каждый символ, и даже не на каждый fflush: fflush приводит лишь к сбросу юзерспейс-буфера в ядро. Будет ли ядро (получив управление через write) переключать задачи или подождёт когда в ядерном буфере накопится побольше? Принудительное переключение процессов происходит лишь тогда, когда ядерный буфер переполняется и без освобождения буфера невозможно выполнить write. Ну, либо по таймеру. Всё это вместе говорит о том, что не стоит так бездумно рассуждать о прямопропорциональной зависимости количества переключений контекстов от количества выводимых символов. Всё несколько хитрее.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру