[подскажите] Существует ли ОСь моей мечты?

durka82

Может уже создали операционную систему, которая удовлетворяет следующим требованиям - с удовольствием бы на неё посмотрел:
1. Активное приложение ВСЕГДА должно получать ДОСТАТОЧНО ресурсов! То есть не важно, что там крутится в фоне, но если активному (то есть с которым я работаю) приложению приспичило что-то сделать, ОСь должна бросить всё и выполнить :)
В той же ХР если какое приложение в фоне что-то массово пишет на винт, остальное может просто умирать :(
2. Хочу, чтобы окна сами не активировались НИКОГДА!
Я конечно понимаю, что создатель каждого приложения мечтает, чтобы об его приложении вспомнили сразу, как только оно перестало тормозить, и иногда это даже полезно. Но как правило так задалбывает, когда ты уже и забыл о том тормозящем приложении, и тут бац - оно проснулось, хотя конкретно сейчас оно нафиг не нужно и только мешает :(
Ещё лучше, если это настраивается (причём в пару кликов) :)
Ну и конечно если оно таки проснулось, ну пусть на таскбаре помигивает иногда, напоминая, но чтобы можно было никуда не переключаясь это помигивание отменить.
3. (возможно это автоматом получится при выполнении 2.) У мышки есть полезная опция - переносить фокус на кнопку по-умолчанию активного окна.
Вот чтобы такое происходило реально только с активным окном, а не так, что я жму ЛКМ, а нажимаю на кнопку совсем в другом окне :(
Ну и чтобы такая фишка мыша тоже легко переключалась (но это уже наверняка можно и сейчас настроить) :)
Просветите пожалуйста! :)

hwh2010

что касается 2 и 3 — то это делается в иксах (пишешь свой window manager или дорабатываешь существующий)
что касается 1 — на ум приходит только renice приложений из window manager при переключении

dangerr

Это конечно всё хорошо, но к самой ОС отношение имеет пожалуй только первое требование. Второе и третье относятся к менеджеру окон. Третье требование сформулировано так, что после нескольких прочтений до меня оно не дошло. Насчёт второго могу сказать, что у меня так сейчас и есть и ссылка на то, что это реализует у меня в подписи. Правда есть один недостаток у этого: если раньше когда я садился за винду (гном, кде меня их поведение лишь немного раздражало, то теперь меня это просто нервирует.
Первое требование я думаю можно реализовать в том же ионе, прописав в конфиге, чтобы он делал renice при активации/деактивации окна, но это не в пару кликов делается, а надо знать язык lua (я так и не изучил).

okis

Ну во-первых не ось а гуй.
Для первого пункта можно фоновую прогу написать, которая активному приложению выставляет самый высокий приоритет. По поводу тормозов при записи на винт — это особенности используемого железа.
По второму — disable taskbar flashing. Ну и перехватчик для SetActiveWindow написать. Это если допиливать Windows XP.
Про альтернативные варианты уже написали выше.

yroslavasako

Ну во-первых не ось а гуй.
шедулер - это всё-таки инструмент ОС, а не графической системы. И простым renice требуемой функциональности не добиться

Marinavo_0507

По поводу тормозов при записи на винт — это особенности используемого железа.
Думаю, это далеко не так. Хотя, конечно, и железо бывает странное, но редко.

okis

Согласен. А в linux вообше стоит такая проблема как у ТС (с тормозами при обмене с диском)? Я на десктопе такого не замечал.

sergeikozyr

Думаю, это далеко не так. Хотя, конечно, и железо бывает странное, но редко.
Редко? Нет, не редко. На том же nForce2 под линупсом идут гигантские iowait. У меня на работе, на интеле 945 тоже тормозня.

Marinavo_0507

Редко? Нет, не редко. На том же nForce2 под линупсом идут гигантские iowait.
И о чём это, по-твоему, должно говорить?

sergeikozyr

о том, что renice в этом случае ничего не даст.

Marinavo_0507

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

okis

Вообще, в ядре 6.0 как-то хорошо допилили шедулер и io completion, т.ч. по сравнению с ним ядро 5.1 действительно неоптимально обрабатывает массовые io запросы.

durka82

window manager

Это который Gnome/KDE/etc?

hwh2010

Это который Gnome/KDE/etc?
в первом приближении — да

yroslavasako

Это который Gnome/KDE/etc?
точнее metacity,kwin

durka82

Второе и третье относятся к менеджеру окон.

Издержки долгого общения с виндой :grin:
Третье требование сформулировано так, что после нескольких прочтений до меня оно не дошло.

В ХР это Панель управления/Мышь/Параметры указателя/Исходное положение в диалоговом окне.
Правда есть один недостаток у этого: если раньше когда я садился за винду (гном, кде меня их поведение лишь немного раздражало, то теперь меня это просто нервирует.

А в чём проблема?
Неужели всё так плохо?

durka82

Для первого пункта можно фоновую прогу написать, которая активному приложению выставляет самый высокий приоритет.

Это конечно можно, но неужели оси такого сами делать не умеют?
А то такая прога в первую очередь с осью как раз и будет конкурировать?..
По поводу тормозов при записи на винт — это особенности используемого железа.

При чём тут железо?
Просто 1 процесс слишком сильно юзает винт, и для винды это видимо фатально :(
Может конечно это можно настроить, но тогда тем более железо не при чём.
Если всё же железо, то как выбрать нетормозное?

serega1604

>metacity
это вообще пародия на менеджер окон.

durka82

И простым renice требуемой функциональности не добиться

Почему?

durka82

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

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

durka82

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

hwh2010

Неужели то, что я хочу, такая экзотика, что надо прямо свой менеджер окон писать?
1 — думаю, да
2 — думаю, нет
3 — с ходу не понял, вникать влом. скажи другими словами плз

dangerr

В ХР это Панель управления/Мышь/Параметры указателя/Исходное положение в диалоговом окне.
Ну вообще тогда как ты и говорил третье следует из втрого. Только не знаю есть ли такая функция у иона, я мышью вообще мало пользуюсь. По идее должна быть.

А в чём проблема?
Неужели всё так плохо?
Эта проблема неплохо отражается в поговорке: "К хорошему быстро привыкаешь".

hwh2010

3 — это ты имеешь в виду, что первый щелчок мыши должен только менять фокус, но не работать как щелчок, а второй — уже работать? или я не понял?
впрочем, в мире свободно распространяемого ПО разработчики с пользователями заодно, поэтому не показывают им окна слишком навязчиво.
Я, например, когда писал свой WM, решил что те программы, которыми я пользуюсь, не будут выбрасывать окна помимо моего желания. Поэтому WM делает окно активным, если оно этого хочет. Пока что у меня почти не было проблем, что окно слишком часто такого желает.

zlata07

как я понял 3 это к примеру открыт плеер, а ты работаешь в другом окне и скажем изменить громкость плеера мышью, но при этом так чтобы окно плеера оставалось не активным, то есть за окном приложения
если так, то mac os умеет это уже очень давно

hwh2010

это изврат имхо. я вообще против одновременного размещения нескольких окон на экране

Dasar

это изврат имхо. я вообще против одновременного размещения нескольких окон на экране
это справедливо - только для одного маленького монитора.
я как-то себе плохо представляю - например, окно консоли распахнутое на два 30 дюймовых монитора.

hwh2010

я как-то себе плохо представляю - например, окно консоли распахнутое на два 30 дюймовых монитора.
одно окно на 2 монитора — также изврат
а на 22 дюйма я всегда распахиваю консоль на весь экран и всё равно изредка делаю less -S
впрочем, наверное именно поэтому мне большие мониторы и не близки: я не умею и не считаю нужным располагать на экране неполноэкранные окна. да и комнатка у меня пока невелика, я б за 30-дюймовый монитор в окно бы выглянуть не смог сидя :)

zlata07

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

serega1604

те не-тайловыеWM которые я видел в Linux тоже так умели, вроде.

PrSnake

как я понял 3 это к примеру открыт плеер, а ты работаешь в другом окне и скажем изменить громкость плеера мышью, но при этом так чтобы окно плеера оставалось не активным, то есть за окном приложения
Если я правильно понял предложение, то я сейчас так сделал в дефолтном гноме убунту. Чтобы прокрутить списки колесом мыши не надо активировать окно.

kokto

Если я правильно понял предложение, то я сейчас так сделал в дефолтном гноме убунту. Чтобы прокрутить списки колесом мыши не надо активировать окно.
Так это по дефолту вроде. В федоре по крайней мере. :)

hwh2010

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

sergeikozyr

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

yroslavasako

Кстати, не ставьте себе убунты. Она тормозит и глючит ещё больше чем винда. Причём в отличие от последней не понятно почему и как исправить. Нормальных конфигураторов хрен найдёшь, в файловой системе я тоже быстро отыскать конфиги не смог. А понять какой процесс при логоффе удаляет мои конфиги, и по какому принципу он избирает те, что достойны удаления, я так и не смог. Знаете как надоедает каждый раз при старте фф настраивать noscript?
Уж лучше банальная винда, чем непонятный убунту. Либо по камушку собирать линукс систему самому, но тогда убунту не нужен.

dangerr

Это всё надуманные проблемы менеджеров с перекрывающимися окнами. У тайловых менеджеров реализован подход focus-follow-mouse. Я переношу мышь, чтобы изменить громкость на плеер - окно становится активным. Меняю громкость (кликом, драгом, колесом - не важно снова возвращаю назад и активное уже старое окно.

PrSnake

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

yroslavasako

Ты задрот. А если нужна бесплатная ОС, а винды по тем или иным причинам бесплатной Ты получить без гемора не можешь? Но раньше Ты видел только компы под виндой с рабочим столом, ярлычками и прочим г..ном. Тоже посоветуешь осваивать генту? Если Ты не программист и Тебе посрать на внутреннюю структуру ОС.
Ты не умеешь читать.
Если нужна бесплатная ОС - винда по MSDNAA. Либо платная, благо что их счас дофига с ноутами продают, хрен откажешься.
Мне посрать на внутренню структуру ОС, если при логоффе не исчезают данные (банальный ресет или poweroff данные, однако, сохраняет если система не тормозит, не шуршит винтом до такой стадии, что останавливаются иксы из-за какого-то дерьмового процесса в очередном кроне, если раз в неделю по непонятным причинам не будут зависать иксы (жрать 100% времени и ничего не показывать).

PrSnake

Эээ...
а винды по тем или иным причинам бесплатной Ты получить без гемора не можешь?

Ты не умеешь читать.
Если нужна бесплатная ОС - винда по MSDNAA. Либо платная,
:confused:

BondarAndrey

Кстати, не ставьте себе убунты.
У тебя фимоз головного мозга на почве онеме.

yroslavasako

У тебя фимоз головного мозга на почве онеме.
низачёт по телепатии. Я последний раз онеме смотрел месяц назад. И то несколько серий. И до того ещё пару месяцев не смотрел.

BondarAndrey

низачёт по телепатии
Да нахер ты мне сдался, на тебя телепатию расходовать :grin:

hwh2010

Ты задрот. А если нужна бесплатная ОС, а винды по тем или иным причинам бесплатной Ты получить без гемора не можешь?
и кто после этого задрот? имхо бесплатность — не повод выбирать линукс и вообще не повод отказываться от венды. Даже если у тебя весьма низкая З/П — отказ от венды не окупится, ты больше времени потратишь на переход с венды на убунту.
Отказываться от венды надо если тебя она не устраивает. Сформулировать, что тебе в ней не нравится. Понять, чего хочешь от новой системы, понять где это взять. (В этом аспекте мне нравится подход топикстартера). Поставить новую систему, не снося старую. Настроить её в свободное время. Убедиться, что стало лучше.
Короче уповать на дружественность убунты надо когда поциент никуда переходить не хочет либо не уверен, а над ним производят насильственные действия.

durka82

3 — с ходу не понял, вникать влом. скажи другими словами плз
Нажал на ЛКМ - появилось новое окно и Курсор Мыша сразу над дефолтной кнопкой этого окна сам.
Хотя наверное это скорее обход издержек неграмотного интерфейса: ну не должны лишние окна появляться, чтобы по ним лишь на Ок нажали, тем более в разных частях экрана (особенно когда так обрабатывается событие, которое запросто может быть массовым, и тогда приходится нцать раз просто жать Ок :( ).
Так что можно сформулировать альтернативное требование: все уведомления должны падать в обозреваемый лог :cool:

durka82

Эта проблема неплохо отражается в поговорке: "К хорошему быстро привыкаешь".

Я просто хочу, чтобы железо работало на меня, а не на прихоти операционной системы/криво написанных приложений!
А то мощи вроде хватает, а распорядиться этим похоже не получается :(

durka82

В принципе это тоже не помешает :)

durka82

Всё правильно :)
Только вот у меня на ноуте Убунту 2-й системой уже 2 года стоит, а толку :grin:
Но возможно это как раз говорит о моей несовместимости с К/Убунту?..
Типа если бы реально было то, что нужно - наступило бы быстрое привыкание с выработкой неприятия старой платформы :cool:
Чувствуется, что процесс реально пойдёт только когда волевым решением на комп будет поставлена только один Линукс (я так понимаю, только он пока выигрывает по теме топика)?..

yroslavasako

Убунта всё равно не решит твоих проблем.
Я вот тоже решил помечтать. Отчасти для того чтобы решить проблему №1 топикстартера. Все остальные решаются нормальным оконным менеджером.
updated: поправил ссылку.

zlata07

во всех иксах не работают глобальные хоткеи
бред
под mac os помимо жопой-жуй своих хоткеев, на любое действие можно без проблем добавить свой

yroslavasako

бред
под mac os помимо жопой-жуй своих хоткеев, на любое действие можно без проблем добавить свой
разверни, пожалуйста, свою мысль, напиши подробнее почему бред, причём тут макось и количество хоткеев?

zlata07

Mac OS X : OS Family — Unix (Mac OS X 10.5 and later)
бред, потому, что фраза об отсутствии глобальных хоткеев не соответствует действительности, а назначение хоткея на любое действие лишь еще раз это доказывает

yroslavasako

Mac OS X : OS Family — Unix (Mac OS X 10.5 and later)
бред, потому, что фраза об отсутствии глобальных хоткеев не соответствует действительности, а назначение хоткея на любое действие лишь еще раз это доказывает
Всё равно ничего не понятно.
Убунта - не макось, зачем ты на неё ссылаешься?
я никогда не говорил, что у меня глобальные хоткеи отсутсвуют. Я говорил, что в случае зависания одной проги они не работают. Назначение хоткея на любую клавишу ничего не доказыает.

zlata07

ты уж извини, но иксы это не только убунта

yroslavasako

Так вот я говорил об убунте, прочитай чуть дальше назад

durka82

Что-то эта ссылка выводит меня на пост про чай в комоне :confused:

yroslavasako

Что-то эта ссылка выводит меня на пост про чай в комоне :confused:
ага, была ошибка в ссылке. странно, что ты первый это заметил. Я в том посте ссылку поправил. Для тех, кому не охота заново этот пост искать, привожу ссылку ниже

durka82

 
Отчасти для того чтобы решить проблему №1 топикстартера

Ну если эти самые домены можно будет переключать при переключении фокуса приложения, тогда наверное поможет.
Только вот переключалка вне поля поста по ссылке.
п.с.: самокопирование не сработало :grin:

Ivan8209

> Может уже создали операционную систему
Да.
> 1. Активное приложение ВСЕГДА должно получать ДОСТАТОЧНО ресурсов!
> То есть не важно, что там крутится в фоне, но если активному
> (то есть с которым я работаю) приложению приспичило что-то
> сделать, ОСь должна бросить всё и выполнить. В той же ХР если
> какое приложение в фоне что-то массово пишет на винт,
> остальное может просто умирать.
Просто предоставь достаточно аппаратных ресурсов, и всего делов.
---
"Прогресс науки обратно пропорционален числу выходящих журналов."

durka82

Спасибо, почитаю :)
Просто предоставь достаточно аппаратных ресурсов, и всего делов.

Так в том то и дело, что ресурсов ДОСТАТОЧНО!
По крайней мере если запускать строго одну задачу - оно работает.
Поскольку операционка (а это накладные расходы) всегда загружена одна и та же - значит добавление новых задач на накладные расходы влиять не должно.
Я понимаю, что если я запущу много всего тяжёлого, то переключение может занимать время.
Но если уж переключение произошло - тормозов из-за других приложений быть не должно.

Ivan8209

>> Просто предоставь достаточно аппаратных ресурсов, и всего делов.
> Так в том то и дело, что ресурсов ДОСТАТОЧНО!
Если ресурсов достаточно, то оно работает в любой операционной системе.
Разве что кроме OpenBSD, поскольку Тео параноик и обладает иным
пониманием СМП.
> По крайней мере если запускать строго одну задачу - оно работает.
Это ни о чём не говорит. Если для одной задачи ресурсов достаточно,
это одно, а две задачи могут начать бороться за один диск, и это другое.
---
"NEVER anthropomorphize lusers."

Marinavo_0507

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

Ivan8209

Q47: а где нетварь?
A47: скоро должна сдохнуть.

durka82

Это ни о чём не говорит. Если для одной задачи ресурсов достаточно,
это одно, а две задачи могут начать бороться за один диск, и это другое.

А я не хочу, чтобы они боролись!
Это ведь мой компьютер, а не их ;)

Ivan8209

> А я не хочу, чтобы они боролись!
Ну так, пиши их так, чтобы не боролись. Если не лень.
> Это ведь мой компьютер, а не их
---
Q51: Hарод, а вы стабильным софтом пользоваться не пробовали?
A51: Пробовали, но мэйнфреймы с дизель-генераторами не везде есть.

durka82

Ну так, пиши их так, чтобы не боролись. Если не лень.

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

Marinavo_0507

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

yroslavasako

root и user - уже два пользователя. А в принципе идея очень верная. Если система может запускать одну программу без тормозов, то эта программа должна работать без тормозов (если пользователь отдельно высказал такое желание и дал ей соответствующий приоритет и квоту ресурсов какие бы ещё программы не были запущены. Они могут вообще вывалится в кору за недостатком памяти, они не главные, и такое поведение терпимо. А когда кроновское тупое задание забивает всю систему посредством спама винчестера - это не тру

kruzer25

эта программа должна работать без тормозов (если пользователь отдельно высказал такое желание и дал ей соответствующий приоритет
Кажется, он не говорил о том, что ставит нужному приложению приоритет real-time.

Ivan8209

>> Ну так, пиши их так, чтобы не боролись. Если не лень.
> Ты пользуешься исключительно самописными прогами?
Значит, всё-таки твои программы могут бороться за ресурсы?
> Может ещё и ось тогда самому написать?
Написать операционную систему не так уж и сложно.
> Естественно программы уже готовые и как правило влияние на их
> методы работы минимально.
Значит, раз ты сам не можешь заниматься согласованием работы программ,
этим разруливанием проблем должна заниматься операционная система.
Тогда и одна из программ пострадает, если бороться за ресурсы начнёт.
> Но вообще говоря многопользовательская ось для того и нужна,
> чтобы не давать программам заниматься самоуправством!
Причём здесь число пользователей?
---
A30: казалось бы, при чём тут осдва?..

yroslavasako

Кажется, он не говорил о том, что ставит нужному приложению приоритет real-time.
он хотел, чтобы это происходило автоматически по факту переключения

Dasar

Они могут вообще вывалится в кору за недостатком памяти, они не главные, и такое поведение терпимо.
пользователь тоже должен выкидываться?
очень наивно думать, что можно считать, что есть какое-то одно Важное Приложение.
как минимум, кроме Важного Приложения еще есть:
1. пользователь - действия которого надо обрабатывать, и пользователю очень не нравится, когда его начинают игнорировать.
2. устройства - действия которых тоже надо обрабатывать, и им тоже не понравится, что они игнорируются.
3. background-ные процессы - например, плейеры - тоже мало кому нравится, если плейер начинает чихать.

kruzer25

он хотел, чтобы это происходило автоматически по факту переключения
Ну вот переключился ты, например, в какое-то нехорошее окно, которое отожрало себе весь процессор. Что делать? Как переключиться назад? Жать reset?

yroslavasako

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

Ivan8209

> очень наивно думать, что можно считать, что есть какое-то одно Важное Приложение.
> как минимум, кроме Важного Приложения еще есть:
> 1. пользователь - действия которого надо обрабатывать,
> и пользователю очень не нравится, когда его начинают игнорировать.
Очень наивно думать, что есть какой-то Важный Пользователь.
Кроме Важного Пользователя есть ещё сторож, которого надо кормить,
и ему очень не нравится, когда его начинают игнорировать.
Правда, в большинстве случаев забытый сторож просто передёргивает питание,
ему покласть на приоритеты.
---
Q51: Hарод, а вы стабильным софтом пользоваться не пробовали?
A51: Пробовали, но мэйнфреймы с дизель-генераторами не везде есть.

Dasar

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

yroslavasako

2. устройства - действия которых тоже надо обрабатывать, и им тоже не понравится, что они игнорируются.
3. background-ные процессы - например, плейеры - тоже мало кому нравится, если плейер начинает чихать.
если нужно, лучше убивать. Если наша программа напрямую с этими устройствами не работает, то их можно отключить в случае нехватки ресурсов, разумеется об этой нехватке нужно сообщить. С музыкой - тоже самое, не критично. Лучше хотя бы одна программа работает хорошо, чем две плохо. Однако, если есть возможность одновременно две программы запускать (хватает ресурсов в идеальном случае - без прочих приложений то нужно разрешить пользователю выбрать два приложения: активное и плеер. Если для приложения требуются ресурсы, обеспечиваемые другими приложениями (например драйвером фс то приоритет наследуется. Но так же должно быть понятно, что это приложение получило ресурсы чтобы обслуживать именно приоритетное, а не левое, так же пославшее запрос на чтение. Да, ядро ОС в любом случае нужно, его вообще из кеша процессора выгружать нецелесообразно.

Dasar

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

yroslavasako

а как быть с тем, что она уже умерла? потому что у нее timeout-ы истекли..
я имел в виду программа для осуществления возврата, например оконный менеджер. Заодно он может запустить диспетчер процессов, передать ему активность и приоритет, а тот, в свою очередь, убьёт наглое зависшее приложение. Топикстартер указывал на проблему с некорректным сочетанием работ корректных программ. А если защищаться от всяких некорректных приложений, то пригодится MAC, который я в Alt.H&S.Linux искал. В том числе, чтобы каждому домену можно было квоты приоритетов расставлять и триггеры вешать на некоторые события, например захват процессора или захват винчестера.

kruzer25

Программа, необходимая для возврата тоже получает повышенный приоритет
Ничего не понял. У текущей задачи очень высокий приоритет, гораздо выше, чем у оконного менеджера; она отжирает весь процессор, оконный менеджер ничего не может делать. Как переключиться на другую?

dgaf

>Да, ядро ОС в любом случае нужно, его вообще из кеша процессора выгружать нецелесообразно.
Наше не влезает =(
$ du -sbh vmlinux
54M vmlinux
это без учёта структур данных
кстати, о кэше какого процессора\ядра идёт речь? 0го, 1го, всех?

yroslavasako

Наше не влезает =(
Юзайте микроядерные RT OS

yroslavasako

Значит не давать отжирать у оконного менеджера всё. Для решения задач в real time принято наследовать приоритеты, приложение передаёт свой приоритет тому приложению, от которого хочет что-либо получить. В данному случае ввод мышки, клавы и прочего. И в идеальном случае (запущена одна программа) оконный менеджер тоже запущен. Если он справляется в идеальном случае, то привнесение дополнительных программ не должно менять того факта, что он справляется. Этого хочет топикстартер и мне кажется, что это логично и достижимо.
Ясное дело, что происходят аварии, когда поддерживать работоспособность становится трудно (зависает оконный менеджер или зависает само приложение). Но топикстартер говорил не о них. А для аварий нужно постараться предусмотреть большинство негативных сценариев и придумать реакцию на них, позволяющую обойтись без ресета, но хотя и с потерей некоторых данных

dgaf

>Юзайте микроядерные RT OS
есть, да. Ядро с сетью, многозадачностю и прочей ерундой влезают в десятки Кб кода, только вот на попсовый x86 до сих пор не портировано.

kruzer25

Значит не давать отжирать у оконного менеджера всё
А почему? Как ты предлагаешь это формализовать?
приложение передаёт свой приоритет тому приложению, от которого хочет что-либо получить. В данному случае ввод мышки, клавы и прочего
"Плохое" приложение не хочет получать ввод, оно просто хочет нагрузить процессор на сто процентов, чтобы ты из него выйти не смог.

yroslavasako

есть, да. Ядро с сетью, многозадачностю и прочей ерундой влезают в десятки Кб кода, только вот на попсовый x86 до сих пор не портировано.
Ничего не знаю, у меня на оптеронах пашет QNX. А вот openvms, действительно, не так хорошо портирована, впрочем на титанеке достижима

yroslavasako

"Плохое" приложение не хочет получать ввод, оно просто хочет нагрузить процессор на сто процентов, чтобы ты из него выйти не смог.
Мы рассматриваем случай топикстартера или аварийный? Если второй, то с ним может справится продвинутый контроль доступа и шедулер, который некоторому домену гарантирует какое-то количество тактов в секунду

kruzer25

Мы рассматриваем случай топикстартера или аварийный?
Мы рассматриваем, как реализовать то, что хочет топикстартер.
Топикстартер хочет, чтобы, если какое-то нужное ему приложение приложение хочет отожрать весь процессор - чтобы оно могло это делать" и чтобы никакие там оконные менеджеры (и другие приложения) при этом не брали даже самый маленький кусочек процессора себе. Был приведён пример "плохого" приложения, когда при такой схеме придётся воспользоваться reset-ом.
Как ОС должна отличать "хорошие" приложения от "плохих"? Как понять, давать приложению real-time при переключении на него или не давать? Топикстартер ведь хочет, чтобы это происходило автоматически.
шедулер, который некоторому домену гарантирует какое-то количество тактов в секунду
Не катит:
Активное приложение ВСЕГДА должно получать ДОСТАТОЧНО ресурсов! То есть не важно, что там крутится в фоне, но если активному (то есть с которым я работаю) приложению приспичило что-то сделать, ОСь должна бросить всё и выполнить
А отдавать кому-то другому приложению некоторое количество тактов - это уже не предоставлять активному приложению достаточно ресурсов (если оно хочет получить всё).

yroslavasako

Топикстартер хочет, чтобы, если какое-то нужное ему приложение приложение хочет отожрать весь процессор - чтобы оно могло это делать" и чтобы никакие там оконные менеджеры (и другие приложения) при этом не брали даже самый маленький кусочек процессора себе.
он этого не говорил. О признавал, что некоторые постоянные затраты, в том числе на оконный менеджер, имеют место быть. И если приложение работало хотя бы в одном случае нормально, то оно и должно работать нормально в других случаях, если пользователь желает это реализовать ценой работоспособности и аварийного останова прочих программ, в процессе пользовательской работы не участвующих.

yroslavasako

А отдавать кому-то другому приложению некоторое количество тактов - это уже не предоставлять активному приложению достаточно ресурсов (если оно хочет получить всё).
топикстартер упоминал уже оттестирвоанные приложения. И раз пользователь продолжает ими пользоваться, значит ресурсов хватает и на приложение, и на оконный менеджер. А чтобы избавиться от элемента аварии (зависание приложения, которое уже было оттестировано, и для которого убедились, что оно 100% не жрёт в процессе работы) и гарантируется оконному менеджеру небольшой кусок ресурсов

BondarAndrey

В линуксячьем ядре имеется возможность группировать задачи, лимитируя (и гарантируя) долю CPU для каждой. Если очень надо — пишите свой window manager, который динамически помещать процесс активного окна в группу с гарантированным минимумом CPU, ну и сам тоже гарантированный минимум всегда получать. В целом, это только понизит производительность, зато будет все так, как хочет ТС.
Ну и для размышлений: http://www.mjmwired.net/kernel/Documentation/cgroups.txt

BondarAndrey

 С другой стороны, выделение минимума CPU для менеджера окон уже сейчас должно делаться простым добавлением стартового скрипта. Однако если приложение будет тормозить с обновлением его содержимого, то это, наверное, тоже раздражать будет.
Да, про процессы, жрущие диск. Опять-таки в линуксячьем ядре есть возможность задать приоритет I/O (man ionice если задать idle, то воздействие такого процесса на остальные с нормальным приоритетом будет минимальным. Чем пользуется, например, tracker при индексации — именно за это (и за inotify) я его люблю и не отключаю :)

dgaf

>Ничего не знаю, у меня на оптеронах пашет QNX.
"Мой ТВ-тюнер будет работать?"

yroslavasako

"Мой ТВ-тюнер будет работать?"
будет, если он умеет MPEG2 TS выдавать

durka82

Ты ничего не говорил про многих пользователей.

Ну да, наверное я неверно выразился - имелась в виду много задачность.

durka82

Кажется, он не говорил о том, что ставит нужному приложению приоритет real-time.

Мне, как рядовому пользователю, должно быть пофиг, как это реализуется!
Если с тз системы для реализации 1. нужен этот самый приоритет - ну пусть поставит.
Мне не жалко - главное, чтобы работало :)

durka82

Значит, всё-таки твои программы могут бороться за ресурсы?

Если бы они этого не делали - наверняка и так бы всё работало - достаточно лишь чуть повысить приоритет активной задачи.

kruzer25

Мне, как рядовому пользователю, должно быть пофиг, как это реализуется!
Ты, как рядовой пользователь, должен уметь формулировать конкретные требования. А пока что получается "хочу, чтобы хорошим программам давать процессорЮ а плохим нет" - и без уточнения, какие программы хороши, а какие нет. Реализовать телепатию не получится, уж извини.
Если с тз системы для реализации 1. нужен этот самый приоритет - ну пусть поставит.
Мне не жалко - главное, чтобы работало
Ещё раз. Запущено какое-то приложение, оно (неважно, по какой причине) сильно нагружает процессор - так сильно, как только может. С твоим тз выйдет, что, когда ты переключишься в это приложение - выйти сможешь только нажав reset.
Я тут не о проблемах какой-нибудь конкретной реализации говорю, а о некорректности твоего тз.

BondarAndrey

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

durka82

1. пользователь - действия которого надо обрабатывать, и пользователю очень не нравится, когда его начинают игнорировать.

Так пользователь и есть практически то приложение, с которым он сейчас работает.
Так что он не игнорируется ни при каких обстоятельствах ;)
2. устройства - действия которых тоже надо обрабатывать, и им тоже не понравится, что они игнорируются.

Если устройство сейчас реально нужно и на него не хватает ресурсов - это конечно проблема.
Тут как раз необходим либо компромисс, либо повышение системных требований.
С другой стороны, если работа с этими устройствами - часть основной задачи - переживётся, если придётся обоснованно подождать.
А на практике часто бывает, что устройство сейчас нафиг не нужно, зато всё тянет на себя.
Поведение той же ХР при вставке сидишника/дискеты - достаточно показательный пример - даже переключаешься на другую задачу, а пока не раскрутит/прочитает - с ФС не поработаешь :(
Не имеющие отношения к активной задаче устройства запросто можно ставить в очередь и обрабатывать по возможности.
3. background-ные процессы - например, плейеры - тоже мало кому нравится, если плейер начинает чихать.

Тогда получается, что плеер является большим приоритетом, чем основная выполняемая задача ;)
Я, например, предпочту чтобы звук заткнулся, но основной процесс не тормозил, чем буду под безупречную музыку наблюдать слайдшоу.
А в остальном написанное выше про устройства распространяется и на бэкграунд (устройство=драйвер, который по сути бэкграундный процесс).

durka82

Ну вот переключился ты, например, в какое-то нехорошее окно, которое отожрало себе весь процессор. Что делать? Как переключиться назад? Жать reset?

Пользователь прежде всего - пока он работает в этом нехорошем окне - пусть хоть обожрётся.
Как только покинул - пусть перебивается остатками.
А если для переключения необходим резет - это извините не многозадачная ось, а хрень какая-то :(

durka82

Ничего не понял. У текущей задачи очень высокий приоритет, гораздо выше, чем у оконного менеджера; она отжирает весь процессор, оконный менеджер ничего не может делать. Как переключиться на другую?

Значит эта технология (ОСь и/или ВМ) не подходит для реализации 1.

durka82

Ясное дело, что происходят аварии, когда поддерживать работоспособность становится трудно

У меня складывается впечатление, что если действительно обеспечить пункт 1., то такая система с авариями должна справляться на раз :cool:

durka82

"Плохое" приложение не хочет получать ввод, оно просто хочет нагрузить процессор на сто процентов, чтобы ты из него выйти не смог.

Расстрелять из плюсомёта и выбросить :cool:

durka82

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

durka82

Ну да, по хорошему надо мониторить, собирать статистику, предсказывать и уточнять прогноз :)

kruzer25

Как только покинул - пусть перебивается остатками.
Как покинуть-то? Текущее приложение отожрало себе весь процессор, кто будет обрабатывать покидание?

durka82

Ты, как рядовой пользователь, должен уметь формулировать конкретные требования. А пока что получается "хочу, чтобы хорошим программам давать процессорЮ а плохим нет" - и без уточнения, какие программы хороши, а какие нет. Реализовать телепатию не получится, уж извини.

Не было ни про какие хорошие/плохие программы - было лишь активное приложение и всё остальное - что непонятно?
Запущено какое-то приложение, оно (неважно, по какой причине) сильно нагружает процессор - так сильно, как только может. С твоим тз выйдет, что, когда ты переключишься в это приложение - выйти сможешь только нажав reset.

Я уже писал про вырожденные решения и что с ними делать ;)
Вполне понятно, что если текущая задача реально не может работать в риалтайме на этом железе, то ничего не остаётся, кроме как выполнять её с тормозами, ну или апгрейдить железо.
И если при этом такая задача способна повесить системы - такой системе место на свалке.

durka82

Не совсем.
Если активное приложение всё не потребляет - остальное не должно пропадать.
То есть получается, что всех остальных надо ставить в идл.

kruzer25

Значит эта технология (ОСь и/или ВМ) не подходит для реализации 1.
Где я в своём посте говорил хоть что-то о конкретной ОС и/или ВМ?
Скажи ещё "хочу летать со скоростью миллион километров в секунду, вы же учёные, вот и сделайте, детали реализации меня не волнуют". Тебе говорят "но это невозможно, быстрее скорости света никак не получится" - в чём смысл отвечать "значит, технология, которую вы сейчас используете для космических кораблей, не подходит, придумайте что-нибудь другое"?

kruzer25

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

durka82

Если последними постами я на вопрос не ответил - ничего кроме перечитать мои посты с начала посоветовать не могу.

vall

В линуксячьем ядре имеется возможность группировать задачи, лимитируя (и гарантируя) долю CPU для каждой.
неа. нету.
. Опять-таки в линуксячьем ядре есть возможность задать приоритет I/O (man ionice если задать idle, то воздействие такого процесса на остальные с нормальным приоритетом будет минимальным.
работает но хуйово

durka82

Где я в своём посте говорил хоть что-то о конкретной ОС и/или ВМ?
Скажи ещё "хочу летать со скоростью миллион километров в секунду, вы же учёные, вот и сделайте, детали реализации меня не волнуют". Тебе говорят "но это невозможно, быстрее скорости света никак не получится" - в чём смысл отвечать "значит, технология, которую вы сейчас используете для космических кораблей, не подходит, придумайте что-нибудь другое"?

Тогда непонятно, зачем столько всего писать, если можно было в первом же посте написать, что это невозможно?

durka82

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

Вы с какой целью интересуетесь? (с)

kruzer25

Так пользователь и есть практически то приложение, с которым он сейчас работает.
Обычно пользователи работают более чем с одним приложением.
Поведение той же ХР при вставке сидишника/дискеты - достаточно показательный пример - даже переключаешься на другую задачу, а пока не раскрутит/прочитает - с ФС не поработаешь
Что значит "с ФС не поработаешь"? Если я правильно понял, о чём ты - то приоритеты не имеют к этому никакого отношения, если ты открываешь какое-то окно, где показывается содержимое "моего компьютера" (напрямую, или через дерево папок, или ещё как-то) - там тебе показывается список дисков с их свойствами, а свойства компакт-диска не получится получить, пока он не раскрутится. Это решается удалением такой точки монтирования для привода.
Не видел, чтобы в такой ситуации тормозило что-то ещё.
Тогда получается, что плеер является большим приоритетом, чем основная выполняемая задача
Я, например, предпочту чтобы звук заткнулся, но основной процесс не тормозил, чем буду под безупречную музыку наблюдать слайдшоу.
А теперь давай переформулируем это так.
Ты сжимаешь большой файл, в фоне играет музыка, плееру нужны полпроцента производительности процессора на декодирование и воспроизведение. Что лучше, чтобы файл сжимался 100 секунд, но всё это время играла музыка - или чтобы архив сжимался всего лишь 99.5 секунд, но на всё это время музыка заткнулась?
Или ты редактируешь офисный документ, нажал "сохранить", процесс сохранения занимает 0.1 секунды. Лучше, наверное, чтобы эти 0.1 секунды играла музыка, чем чтобы она на это время заткнулась, но ты бы сэкономил 0.0005 секунды на этом сохранении?

kruzer25

Не было ни про какие хорошие/плохие программы - было лишь активное приложение и всё остальное - что непонятно?
Да, я уже понял, что не ты ввёл эти понятия, ты даже ещё не понял, что они нужны.
Вполне понятно, что если текущая задача реально не может работать в риалтайме на этом железе
Что значит "риалтайм"?
Вот для задачи типа "воспроизвести видео", "воспроизвести музыку", "захватить видео с камеры", "отрендерить 50 кадров игры в секунду" я понимаю "может/не может работать в риалтайме".
Для всех остальных задач нет такого понятия. На каком-то железе задача сделает свою работу быстро, на каком-то медленно, но если ты ей дашь весь процессор - она отожрёт его весь.
ничего не остаётся, кроме как выполнять её с тормозами, ну или апгрейдить железо.
И если при этом такая задача способна повесить системы - такой системе место на свалке.
Создание архива, сохранение офисного документа, рендеринг страницы форума, подсчёт миллиона знаков числа пи - какой компьютер, кроме разве что квантового, может выполнить такие задачи в риалтайме, и что вообще для них означает "риалтайм"? Какой компьютер не "зависнет" при выполнении такой задачи хотя бы на некоторое время, если ты дашь ей все его ресурсы?

kruzer25

Тогда непонятно, зачем столько всего писать, если можно было в первом же посте написать, что это невозможно?
Я и написал, но тебе это оказалось непонятно.

durka82

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

Но активное приложение (с которым он непосредственно взаимодействует) всегда одно.
Ты сжимаешь большой файл, в фоне играет музыка, плееру нужны полпроцента производительности процессора на декодирование и воспроизведение. Что лучше, чтобы файл сжимался 100 секунд, но всё это время играла музыка - или чтобы архив сжимался всего лишь 99.5 секунд, но на всё это время музыка заткнулась?

Если я жду, когда же этот архив сожмётся, чтобы отправить его по почте и пойти наконец домой (то есть это активная задача) - лучше пусть без музыки.
Но если у меня настроено, что после сжатия архив отправится автоматически и дидлайна нет - какая мне разница, за сколько часов он сожмётся (неактивная задача).
Или ты редактируешь офисный документ, нажал "сохранить", процесс сохранения занимает 0.1 секунды. Лучше, наверное, чтобы эти 0.1 секунды играла музыка, чем чтобы она на это время заткнулась, но ты бы сэкономил 0.0005 секунды на этом сохранении?

В жизни 0.0005 сек ни на что не влияют и заметить их очень сложно.
А вообще я бы наверное предпочёл настроить автосохранение в паузах между композициями :cool:

durka82

Я и написал, но тебе это оказалось непонятно.

А можно ссылку?
А то что-то в теме не находится?..

kruzer25

Но активное приложение (с которым он непосредственно взаимодействует) всегда одно.
Что значит "непосредственно"? А с плеером, когда музыку слушает, он, что ли, не непосредственно взаимодействует?
Если я жду, когда же этот архив сожмётся, чтобы отправить его по почте и пойти наконец домой (то есть это активная задача) - лучше пусть без музыки.
Лучше сэкономить полсекунды, но сидеть полторы минуты без музыки? Эти полсекунды вообще хоть какое-нибудь значение имеют? А пять секунд при продолжительности сжатия 15 минут?
В жизни 0.0005 сек ни на что не влияют и заметить их очень сложно.
Ага, а вот затыкание музыки на 0.1 секунды заметить уже очень легко и неприятно. Ты всё ещё считаешь, что редактору надо отдавать весь процессор без исключения?
А вообще я бы наверное предпочёл настроить автосохранение в паузах между композициями
О, уже начинаем костыли втыкать. Кстати, композиции бывают и длиной по полчаса; а ещё существует такое понятие, как гаплесс.

durka82

Да, я уже понял, что не ты ввёл эти понятия, ты даже ещё не понял, что они нужны.

В моей постановке эти понятия не нужны:
1. Если программа откровенно кривая - не стоит ею пользоваться вообще;
2. Если она просто жадная - система, решающая 1., должна и так жадность поубавить.
Вот для задачи типа "воспроизвести видео", "воспроизвести музыку", "захватить видео с камеры", "отрендерить 50 кадров игры в секунду" я понимаю "может/не может работать в риалтайме".
Для всех остальных задач нет такого понятия. На каком-то железе задача сделает свою работу быстро, на каком-то медленно, но если ты ей дашь весь процессор - она отожрёт его весь.

Да ладно.
Грубо говоря, работа в ворде является риалтайм, пока отклик на все действия достаточно низкий (не знаю, сколько там по юзабилити полагается).
Создание архива, сохранение офисного документа, рендеринг страницы форума, подсчёт миллиона знаков числа пи - какой компьютер, кроме разве что квантового, может выполнить такие задачи в риалтайме, и что вообще для них означает "риалтайм"? Какой компьютер не "зависнет" при выполнении такой задачи хотя бы на некоторое время, если ты дашь ей все его ресурсы?

Часть из этих задач - явные фоновые: Создание архива, подсчёт миллиона знаков числа пи.
Другая часть может быть решена умнее. Например:
а. Сохранение документа: если иметь периодические сохранения + журнал операций с последнего сохранения - любое пожелание по сохранению документа обрабатывается мгновенно - одной записью, а реальное сохранение можно провести потом в фоне;
б. Рендеринг страницы форума может быть сделан как предварительно, так и в сторону улучшения детализации с выводом в начале грубого рендера.
Но эти задачи так же могут оказаться и под силу компу для обработки в риалтайме в смысле юзабилити.

kruzer25

2. Если она просто жадная - система, решающая 1., должна и так жадность поубавить.
Не понял, каким образом первый пункт поубавит жадность программы с активным окном? Ты же наоборот, собрался у всех остальных приложений ресурсы отбирать, чтобы дать жадной.
Грубо говоря, работа в ворде является риалтайм, пока отклик на все действия достаточно низкий (не знаю, сколько там по юзабилити полагается).
Что значит "достаточно низкий"?
Я уже привёл пример - действие занимает 0.1 секунды, это низко; экономия может составить 0.0005 секунды - это вообще несущественно; а вот музыка заткнётся на 0.1 секунды - это очень много.
б. Рендеринг страницы форума может быть сделан как предварительно, так и в сторону улучшения детализации с выводом в начале грубого рендера.
Я зашёл на страницу, она скачалась, надо её рендерить. Что значит "предварительно"?
Часть из этих задач - явные фоновые: Создание архива, подсчёт миллиона знаков числа пи.
Это были всего лишь примеры. На самом деле, для подавляющего большинства задач (не в смысле приложения, а в смысле конкретной операции приложения) понятие "риалтайм" бессмысленно (тот "юзабилити риалтайм", который ты тут пытаешься ввести, не формализуем и не вычисляем). Этим задачам надо выполнить конкретное количество работы, и, сколько мощности ты им не дашь - всю заиспользуют (но, чем больше мощность - тем меньше время выполнения).
Стоит ли уменьшать время выполнения какой-то мелкой задачи активного приложения на полпроцента ценой того, что всё это время музыка не будет играть? Разве что для ненормального; а нормальный человек скажет "да срать мне на эти полпроцента".
Значит, нужно уметь отличать приложения, для которых понятие риалтайма имеет смысл (фильм, музыка, голосовое общение, видеоигра) - это не формализуемо, так что придётся ставить им приоритет "риалтайм" руками. А для активной задачи действительно имеет смысл ставить приоритет повыше - но только повыше, а не риалтайм.
Сделать же просто заебись не получится, потому что это не формализуемо, компьютер - не телепат, и понять, что именно для тебя в данный момент будет заебись, не сможет.

hwh2010

короче, надо тебе сделать вот что:
повысить приоритет у window-manager'а и у активного приложения
через некоторое время тебя задолбает, что у тебя плейер крякает от кратковременных потребностей активной задачи и ты добавишь в список "привилегированных" ещё и плейер и при необходимости зазиповать файл на 1% быстрее будешь его выключать самостоятельно
в любом случае, ты можешь запрогать любую логику изменений приоритетов в зависимости от потребностей приложений и от положения их окон (какое активно). Вопрос скорее в том, как бы эта логика тебе во вред не вышла.

durka82

Всем спасибо, буду пробовать :)
Оставить комментарий
Имя или ник:
Комментарий: