[подскажите] Существует ли ОСь моей мечты?
что касается 1 — на ум приходит только renice приложений из window manager при переключении
Первое требование я думаю можно реализовать в том же ионе, прописав в конфиге, чтобы он делал renice при активации/деактивации окна, но это не в пару кликов делается, а надо знать язык lua (я так и не изучил).
Для первого пункта можно фоновую прогу написать, которая активному приложению выставляет самый высокий приоритет. По поводу тормозов при записи на винт — это особенности используемого железа.
По второму — disable taskbar flashing. Ну и перехватчик для SetActiveWindow написать. Это если допиливать Windows XP.
Про альтернативные варианты уже написали выше.
Ну во-первых не ось а гуй.шедулер - это всё-таки инструмент ОС, а не графической системы. И простым renice требуемой функциональности не добиться
По поводу тормозов при записи на винт — это особенности используемого железа.Думаю, это далеко не так. Хотя, конечно, и железо бывает странное, но редко.
Согласен. А в linux вообше стоит такая проблема как у ТС (с тормозами при обмене с диском)? Я на десктопе такого не замечал.
Думаю, это далеко не так. Хотя, конечно, и железо бывает странное, но редко.Редко? Нет, не редко. На том же nForce2 под линупсом идут гигантские iowait. У меня на работе, на интеле 945 тоже тормозня.
Редко? Нет, не редко. На том же nForce2 под линупсом идут гигантские iowait.И о чём это, по-твоему, должно говорить?
о том, что renice в этом случае ничего не даст.
о том, что renice в этом случае ничего не даст.iowait говорит о том, что дисковые операции совершаются ненулевое время, и есть процессы, которые ждут их завершения, и больше ни о чём
автор треда не требует мгновенного завершения операций, он хочет, чтобы у активного процесса оные операции имели приоритет над остальными
Вообще, в ядре 6.0 как-то хорошо допилили шедулер и io completion, т.ч. по сравнению с ним ядро 5.1 действительно неоптимально обрабатывает массовые io запросы.
window manager
Это который Gnome/KDE/etc?
Это который Gnome/KDE/etc?в первом приближении — да
Это который Gnome/KDE/etc?точнее metacity,kwin
Второе и третье относятся к менеджеру окон.
Издержки долгого общения с виндой
Третье требование сформулировано так, что после нескольких прочтений до меня оно не дошло.
В ХР это Панель управления/Мышь/Параметры указателя/Исходное положение в диалоговом окне.
Правда есть один недостаток у этого: если раньше когда я садился за винду (гном, кде меня их поведение лишь немного раздражало, то теперь меня это просто нервирует.
А в чём проблема?
Неужели всё так плохо?
Для первого пункта можно фоновую прогу написать, которая активному приложению выставляет самый высокий приоритет.
Это конечно можно, но неужели оси такого сами делать не умеют?
А то такая прога в первую очередь с осью как раз и будет конкурировать?..
По поводу тормозов при записи на винт — это особенности используемого железа.
При чём тут железо?
Просто 1 процесс слишком сильно юзает винт, и для винды это видимо фатально
Может конечно это можно настроить, но тогда тем более железо не при чём.
Если всё же железо, то как выбрать нетормозное?
это вообще пародия на менеджер окон.
И простым renice требуемой функциональности не добиться
Почему?
автор треда не требует мгновенного завершения операций, он хочет, чтобы у активного процесса оные операции имели приоритет над остальными
Если возможно откладывание менее приоритетных операций до момента, когда приоритетная будет полностью удовлетворена, тогда это так.
Неужели то, что я хочу, такая экзотика, что надо прямо свой менеджер окон писать?
Неужели то, что я хочу, такая экзотика, что надо прямо свой менеджер окон писать?1 — думаю, да
2 — думаю, нет
3 — с ходу не понял, вникать влом. скажи другими словами плз
В ХР это Панель управления/Мышь/Параметры указателя/Исходное положение в диалоговом окне.Ну вообще тогда как ты и говорил третье следует из втрого. Только не знаю есть ли такая функция у иона, я мышью вообще мало пользуюсь. По идее должна быть.
Эта проблема неплохо отражается в поговорке: "К хорошему быстро привыкаешь".
А в чём проблема?
Неужели всё так плохо?
впрочем, в мире свободно распространяемого ПО разработчики с пользователями заодно, поэтому не показывают им окна слишком навязчиво.
Я, например, когда писал свой WM, решил что те программы, которыми я пользуюсь, не будут выбрасывать окна помимо моего желания. Поэтому WM делает окно активным, если оно этого хочет. Пока что у меня почти не было проблем, что окно слишком часто такого желает.
если так, то mac os умеет это уже очень давно
это изврат имхо. я вообще против одновременного размещения нескольких окон на экране
это изврат имхо. я вообще против одновременного размещения нескольких окон на экранеэто справедливо - только для одного маленького монитора.
я как-то себе плохо представляю - например, окно консоли распахнутое на два 30 дюймовых монитора.
я как-то себе плохо представляю - например, окно консоли распахнутое на два 30 дюймовых монитора.одно окно на 2 монитора — также изврат
а на 22 дюйма я всегда распахиваю консоль на весь экран и всё равно изредка делаю less -S
впрочем, наверное именно поэтому мне большие мониторы и не близки: я не умею и не считаю нужным располагать на экране неполноэкранные окна. да и комнатка у меня пока невелика, я б за 30-дюймовый монитор в окно бы выглянуть не смог сидя
под виндой полностью с тобой согласен, ибо у всех окон имхо очень «жирные шапки». под мак осью у меня постоянно открыто несколько окон иногда помогает, допустим провернуть pdfку при этом не активируя окно, они же иной раз наползают друг на друга
те не-тайловыеWM которые я видел в Linux тоже так умели, вроде.
как я понял 3 это к примеру открыт плеер, а ты работаешь в другом окне и скажем изменить громкость плеера мышью, но при этом так чтобы окно плеера оставалось не активным, то есть за окном приложенияЕсли я правильно понял предложение, то я сейчас так сделал в дефолтном гноме убунту. Чтобы прокрутить списки колесом мыши не надо активировать окно.
Если я правильно понял предложение, то я сейчас так сделал в дефолтном гноме убунту. Чтобы прокрутить списки колесом мыши не надо активировать окно.Так это по дефолту вроде. В федоре по крайней мере.
Чтобы прокрутить списки колесом мыши не надо активировать окно.колесо всё-таки обычно за клик не считается. а можно ли кликать, не активируя?
колесо всё-таки обычно за клик не считается. а можно ли кликать, не активируя?да
Уж лучше банальная винда, чем непонятный убунту. Либо по камушку собирать линукс систему самому, но тогда убунту не нужен.
Это всё надуманные проблемы менеджеров с перекрывающимися окнами. У тайловых менеджеров реализован подход focus-follow-mouse. Я переношу мышь, чтобы изменить громкость на плеер - окно становится активным. Меняю громкость (кликом, драгом, колесом - не важно снова возвращаю назад и активное уже старое окно.
Либо по камушку собирать линукс систему самому, но тогда убунту не нужен.Ты задрот. А если нужна бесплатная ОС, а винды по тем или иным причинам бесплатной Ты получить без гемора не можешь? Но раньше Ты видел только компы под виндой с рабочим столом, ярлычками и прочим г..ном. Тоже посоветуешь осваивать генту? Если Ты не программист и Тебе посрать на внутреннюю структуру ОС.
Ты задрот. А если нужна бесплатная ОС, а винды по тем или иным причинам бесплатной Ты получить без гемора не можешь? Но раньше Ты видел только компы под виндой с рабочим столом, ярлычками и прочим г..ном. Тоже посоветуешь осваивать генту? Если Ты не программист и Тебе посрать на внутреннюю структуру ОС.Ты не умеешь читать.
Если нужна бесплатная ОС - винда по MSDNAA. Либо платная, благо что их счас дофига с ноутами продают, хрен откажешься.
Мне посрать на внутренню структуру ОС, если при логоффе не исчезают данные (банальный ресет или poweroff данные, однако, сохраняет если система не тормозит, не шуршит винтом до такой стадии, что останавливаются иксы из-за какого-то дерьмового процесса в очередном кроне, если раз в неделю по непонятным причинам не будут зависать иксы (жрать 100% времени и ничего не показывать).
а винды по тем или иным причинам бесплатной Ты получить без гемора не можешь?
Ты не умеешь читать.
Если нужна бесплатная ОС - винда по MSDNAA. Либо платная,
Кстати, не ставьте себе убунты.У тебя фимоз головного мозга на почве онеме.
У тебя фимоз головного мозга на почве онеме.низачёт по телепатии. Я последний раз онеме смотрел месяц назад. И то несколько серий. И до того ещё пару месяцев не смотрел.
низачёт по телепатииДа нахер ты мне сдался, на тебя телепатию расходовать
Ты задрот. А если нужна бесплатная ОС, а винды по тем или иным причинам бесплатной Ты получить без гемора не можешь?и кто после этого задрот? имхо бесплатность — не повод выбирать линукс и вообще не повод отказываться от венды. Даже если у тебя весьма низкая З/П — отказ от венды не окупится, ты больше времени потратишь на переход с венды на убунту.
Отказываться от венды надо если тебя она не устраивает. Сформулировать, что тебе в ней не нравится. Понять, чего хочешь от новой системы, понять где это взять. (В этом аспекте мне нравится подход топикстартера). Поставить новую систему, не снося старую. Настроить её в свободное время. Убедиться, что стало лучше.
Короче уповать на дружественность убунты надо когда поциент никуда переходить не хочет либо не уверен, а над ним производят насильственные действия.
3 — с ходу не понял, вникать влом. скажи другими словами плзНажал на ЛКМ - появилось новое окно и Курсор Мыша сразу над дефолтной кнопкой этого окна сам.
Хотя наверное это скорее обход издержек неграмотного интерфейса: ну не должны лишние окна появляться, чтобы по ним лишь на Ок нажали, тем более в разных частях экрана (особенно когда так обрабатывается событие, которое запросто может быть массовым, и тогда приходится нцать раз просто жать Ок ).
Так что можно сформулировать альтернативное требование: все уведомления должны падать в обозреваемый лог
Эта проблема неплохо отражается в поговорке: "К хорошему быстро привыкаешь".
Я просто хочу, чтобы железо работало на меня, а не на прихоти операционной системы/криво написанных приложений!
А то мощи вроде хватает, а распорядиться этим похоже не получается
В принципе это тоже не помешает
Только вот у меня на ноуте Убунту 2-й системой уже 2 года стоит, а толку
Но возможно это как раз говорит о моей несовместимости с К/Убунту?..
Типа если бы реально было то, что нужно - наступило бы быстрое привыкание с выработкой неприятия старой платформы
Чувствуется, что процесс реально пойдёт только когда волевым решением на комп будет поставлена только один Линукс (я так понимаю, только он пока выигрывает по теме топика)?..
Я вот тоже решил помечтать. Отчасти для того чтобы решить проблему №1 топикстартера. Все остальные решаются нормальным оконным менеджером.
updated: поправил ссылку.
во всех иксах не работают глобальные хоткеибред
под mac os помимо жопой-жуй своих хоткеев, на любое действие можно без проблем добавить свой
бредразверни, пожалуйста, свою мысль, напиши подробнее почему бред, причём тут макось и количество хоткеев?
под mac os помимо жопой-жуй своих хоткеев, на любое действие можно без проблем добавить свой
Mac OS X : OS Family — Unix (Mac OS X 10.5 and later)
бред, потому, что фраза об отсутствии глобальных хоткеев не соответствует действительности, а назначение хоткея на любое действие лишь еще раз это доказывает
бред, потому, что фраза об отсутствии глобальных хоткеев не соответствует действительности, а назначение хоткея на любое действие лишь еще раз это доказывает
Mac OS X : OS Family — Unix (Mac OS X 10.5 and later)Всё равно ничего не понятно.
бред, потому, что фраза об отсутствии глобальных хоткеев не соответствует действительности, а назначение хоткея на любое действие лишь еще раз это доказывает
Убунта - не макось, зачем ты на неё ссылаешься?
я никогда не говорил, что у меня глобальные хоткеи отсутсвуют. Я говорил, что в случае зависания одной проги они не работают. Назначение хоткея на любую клавишу ничего не доказыает.
ты уж извини, но иксы это не только убунта
Так вот я говорил об убунте, прочитай чуть дальше назад
Что-то эта ссылка выводит меня на пост про чай в комоне
Что-то эта ссылка выводит меня на пост про чай в комонеага, была ошибка в ссылке. странно, что ты первый это заметил. Я в том посте ссылку поправил. Для тех, кому не охота заново этот пост искать, привожу ссылку ниже
Отчасти для того чтобы решить проблему №1 топикстартера
Ну если эти самые домены можно будет переключать при переключении фокуса приложения, тогда наверное поможет.
Только вот переключалка вне поля поста по ссылке.
п.с.: самокопирование не сработало
Да.
> 1. Активное приложение ВСЕГДА должно получать ДОСТАТОЧНО ресурсов!
> То есть не важно, что там крутится в фоне, но если активному
> (то есть с которым я работаю) приложению приспичило что-то
> сделать, ОСь должна бросить всё и выполнить. В той же ХР если
> какое приложение в фоне что-то массово пишет на винт,
> остальное может просто умирать.
Просто предоставь достаточно аппаратных ресурсов, и всего делов.
---
"Прогресс науки обратно пропорционален числу выходящих журналов."
Просто предоставь достаточно аппаратных ресурсов, и всего делов.
Так в том то и дело, что ресурсов ДОСТАТОЧНО!
По крайней мере если запускать строго одну задачу - оно работает.
Поскольку операционка (а это накладные расходы) всегда загружена одна и та же - значит добавление новых задач на накладные расходы влиять не должно.
Я понимаю, что если я запущу много всего тяжёлого, то переключение может занимать время.
Но если уж переключение произошло - тормозов из-за других приложений быть не должно.
> Так в том то и дело, что ресурсов ДОСТАТОЧНО!
Если ресурсов достаточно, то оно работает в любой операционной системе.
Разве что кроме OpenBSD, поскольку Тео параноик и обладает иным
пониманием СМП.
> По крайней мере если запускать строго одну задачу - оно работает.
Это ни о чём не говорит. Если для одной задачи ресурсов достаточно,
это одно, а две задачи могут начать бороться за один диск, и это другое.
---
"NEVER anthropomorphize lusers."
Если для одной задачи ресурсов достаточно,Вроде как традиционно считается, что VMS с этим справляется, осталось выкопать труп и портировать туда оконную систему.
это одно, а две задачи могут начать бороться за один диск, и это другое.
A47: скоро должна сдохнуть.
Это ни о чём не говорит. Если для одной задачи ресурсов достаточно,
это одно, а две задачи могут начать бороться за один диск, и это другое.
А я не хочу, чтобы они боролись!
Это ведь мой компьютер, а не их
Ну так, пиши их так, чтобы не боролись. Если не лень.
> Это ведь мой компьютер, а не их
---
Q51: Hарод, а вы стабильным софтом пользоваться не пробовали?
A51: Пробовали, но мэйнфреймы с дизель-генераторами не везде есть.
Ну так, пиши их так, чтобы не боролись. Если не лень.
Ты пользуешься исключительно самописными прогами?
Может ещё и ось тогда самому написать?
Естественно программы уже готовые и как правило влияние на их методы работы минимально.
Но вообще говоря многопользовательская ось для того и нужна, чтобы не давать программам заниматься самоуправством!
А ты пишешь такие ответы, как будто у тебя всегда есть возможность под каждую задачу выделить отдельный достаточно производительный компьютер.
Я конечно рад за тебя, но к теме топика это никакого отношения не имеет, как и любой вырожденный случай.
Но вообще говоря многопользовательская ось для того и нужна, чтобы не давать программам заниматься самоуправством!Ты ничего не говорил про многих пользователей.
root и user - уже два пользователя. А в принципе идея очень верная. Если система может запускать одну программу без тормозов, то эта программа должна работать без тормозов (если пользователь отдельно высказал такое желание и дал ей соответствующий приоритет и квоту ресурсов какие бы ещё программы не были запущены. Они могут вообще вывалится в кору за недостатком памяти, они не главные, и такое поведение терпимо. А когда кроновское тупое задание забивает всю систему посредством спама винчестера - это не тру
эта программа должна работать без тормозов (если пользователь отдельно высказал такое желание и дал ей соответствующий приоритетКажется, он не говорил о том, что ставит нужному приложению приоритет real-time.
> Ты пользуешься исключительно самописными прогами?
Значит, всё-таки твои программы могут бороться за ресурсы?
> Может ещё и ось тогда самому написать?
Написать операционную систему не так уж и сложно.
> Естественно программы уже готовые и как правило влияние на их
> методы работы минимально.
Значит, раз ты сам не можешь заниматься согласованием работы программ,
этим разруливанием проблем должна заниматься операционная система.
Тогда и одна из программ пострадает, если бороться за ресурсы начнёт.
> Но вообще говоря многопользовательская ось для того и нужна,
> чтобы не давать программам заниматься самоуправством!
Причём здесь число пользователей?
---
A30: казалось бы, при чём тут осдва?..
Кажется, он не говорил о том, что ставит нужному приложению приоритет real-time.он хотел, чтобы это происходило автоматически по факту переключения
Они могут вообще вывалится в кору за недостатком памяти, они не главные, и такое поведение терпимо.пользователь тоже должен выкидываться?
очень наивно думать, что можно считать, что есть какое-то одно Важное Приложение.
как минимум, кроме Важного Приложения еще есть:
1. пользователь - действия которого надо обрабатывать, и пользователю очень не нравится, когда его начинают игнорировать.
2. устройства - действия которых тоже надо обрабатывать, и им тоже не понравится, что они игнорируются.
3. background-ные процессы - например, плейеры - тоже мало кому нравится, если плейер начинает чихать.
он хотел, чтобы это происходило автоматически по факту переключенияНу вот переключился ты, например, в какое-то нехорошее окно, которое отожрало себе весь процессор. Что делать? Как переключиться назад? Жать reset?
блин, очевидная инверсия приоритета. Программа, необходимая для возврата тоже получает повышенный приоритет
> как минимум, кроме Важного Приложения еще есть:
> 1. пользователь - действия которого надо обрабатывать,
> и пользователю очень не нравится, когда его начинают игнорировать.
Очень наивно думать, что есть какой-то Важный Пользователь.
Кроме Важного Пользователя есть ещё сторож, которого надо кормить,
и ему очень не нравится, когда его начинают игнорировать.
Правда, в большинстве случаев забытый сторож просто передёргивает питание,
ему покласть на приоритеты.
---
Q51: Hарод, а вы стабильным софтом пользоваться не пробовали?
A51: Пробовали, но мэйнфреймы с дизель-генераторами не везде есть.
блин, очевидная инверсия приоритета. Программа, необходимая для возврата тоже получает повышенный приоритета как быть с тем, что она уже умерла? потому что у нее timeout-ы истекли..
2. устройства - действия которых тоже надо обрабатывать, и им тоже не понравится, что они игнорируются.если нужно, лучше убивать. Если наша программа напрямую с этими устройствами не работает, то их можно отключить в случае нехватки ресурсов, разумеется об этой нехватке нужно сообщить. С музыкой - тоже самое, не критично. Лучше хотя бы одна программа работает хорошо, чем две плохо. Однако, если есть возможность одновременно две программы запускать (хватает ресурсов в идеальном случае - без прочих приложений то нужно разрешить пользователю выбрать два приложения: активное и плеер. Если для приложения требуются ресурсы, обеспечиваемые другими приложениями (например драйвером фс то приоритет наследуется. Но так же должно быть понятно, что это приложение получило ресурсы чтобы обслуживать именно приоритетное, а не левое, так же пославшее запрос на чтение. Да, ядро ОС в любом случае нужно, его вообще из кеша процессора выгружать нецелесообразно.
3. background-ные процессы - например, плейеры - тоже мало кому нравится, если плейер начинает чихать.
а для хорошего решения надо решать систему уравнений?
а как быть с тем, что она уже умерла? потому что у нее timeout-ы истекли..я имел в виду программа для осуществления возврата, например оконный менеджер. Заодно он может запустить диспетчер процессов, передать ему активность и приоритет, а тот, в свою очередь, убьёт наглое зависшее приложение. Топикстартер указывал на проблему с некорректным сочетанием работ корректных программ. А если защищаться от всяких некорректных приложений, то пригодится MAC, который я в Alt.H&S.Linux искал. В том числе, чтобы каждому домену можно было квоты приоритетов расставлять и триггеры вешать на некоторые события, например захват процессора или захват винчестера.
Программа, необходимая для возврата тоже получает повышенный приоритетНичего не понял. У текущей задачи очень высокий приоритет, гораздо выше, чем у оконного менеджера; она отжирает весь процессор, оконный менеджер ничего не может делать. Как переключиться на другую?
Наше не влезает =(
$ du -sbh vmlinux
54M vmlinux
это без учёта структур данных
кстати, о кэше какого процессора\ядра идёт речь? 0го, 1го, всех?
Наше не влезает =(Юзайте микроядерные RT OS
Ясное дело, что происходят аварии, когда поддерживать работоспособность становится трудно (зависает оконный менеджер или зависает само приложение). Но топикстартер говорил не о них. А для аварий нужно постараться предусмотреть большинство негативных сценариев и придумать реакцию на них, позволяющую обойтись без ресета, но хотя и с потерей некоторых данных
есть, да. Ядро с сетью, многозадачностю и прочей ерундой влезают в десятки Кб кода, только вот на попсовый x86 до сих пор не портировано.
Значит не давать отжирать у оконного менеджера всёА почему? Как ты предлагаешь это формализовать?
приложение передаёт свой приоритет тому приложению, от которого хочет что-либо получить. В данному случае ввод мышки, клавы и прочего"Плохое" приложение не хочет получать ввод, оно просто хочет нагрузить процессор на сто процентов, чтобы ты из него выйти не смог.
есть, да. Ядро с сетью, многозадачностю и прочей ерундой влезают в десятки Кб кода, только вот на попсовый x86 до сих пор не портировано.Ничего не знаю, у меня на оптеронах пашет QNX. А вот openvms, действительно, не так хорошо портирована, впрочем на титанеке достижима
"Плохое" приложение не хочет получать ввод, оно просто хочет нагрузить процессор на сто процентов, чтобы ты из него выйти не смог.Мы рассматриваем случай топикстартера или аварийный? Если второй, то с ним может справится продвинутый контроль доступа и шедулер, который некоторому домену гарантирует какое-то количество тактов в секунду
Мы рассматриваем случай топикстартера или аварийный?Мы рассматриваем, как реализовать то, что хочет топикстартер.
Топикстартер хочет, чтобы, если какое-то нужное ему приложение приложение хочет отожрать весь процессор - чтобы оно могло это делать" и чтобы никакие там оконные менеджеры (и другие приложения) при этом не брали даже самый маленький кусочек процессора себе. Был приведён пример "плохого" приложения, когда при такой схеме придётся воспользоваться reset-ом.
Как ОС должна отличать "хорошие" приложения от "плохих"? Как понять, давать приложению real-time при переключении на него или не давать? Топикстартер ведь хочет, чтобы это происходило автоматически.
шедулер, который некоторому домену гарантирует какое-то количество тактов в секундуНе катит:
Активное приложение ВСЕГДА должно получать ДОСТАТОЧНО ресурсов! То есть не важно, что там крутится в фоне, но если активному (то есть с которым я работаю) приложению приспичило что-то сделать, ОСь должна бросить всё и выполнитьА отдавать кому-то другому приложению некоторое количество тактов - это уже не предоставлять активному приложению достаточно ресурсов (если оно хочет получить всё).
Топикстартер хочет, чтобы, если какое-то нужное ему приложение приложение хочет отожрать весь процессор - чтобы оно могло это делать" и чтобы никакие там оконные менеджеры (и другие приложения) при этом не брали даже самый маленький кусочек процессора себе.он этого не говорил. О признавал, что некоторые постоянные затраты, в том числе на оконный менеджер, имеют место быть. И если приложение работало хотя бы в одном случае нормально, то оно и должно работать нормально в других случаях, если пользователь желает это реализовать ценой работоспособности и аварийного останова прочих программ, в процессе пользовательской работы не участвующих.
А отдавать кому-то другому приложению некоторое количество тактов - это уже не предоставлять активному приложению достаточно ресурсов (если оно хочет получить всё).топикстартер упоминал уже оттестирвоанные приложения. И раз пользователь продолжает ими пользоваться, значит ресурсов хватает и на приложение, и на оконный менеджер. А чтобы избавиться от элемента аварии (зависание приложения, которое уже было оттестировано, и для которого убедились, что оно 100% не жрёт в процессе работы) и гарантируется оконному менеджеру небольшой кусок ресурсов
Ну и для размышлений: http://www.mjmwired.net/kernel/Documentation/cgroups.txt
Да, про процессы, жрущие диск. Опять-таки в линуксячьем ядре есть возможность задать приоритет I/O (man ionice если задать idle, то воздействие такого процесса на остальные с нормальным приоритетом будет минимальным. Чем пользуется, например, tracker при индексации — именно за это (и за inotify) я его люблю и не отключаю
"Мой ТВ-тюнер будет работать?"
"Мой ТВ-тюнер будет работать?"будет, если он умеет MPEG2 TS выдавать
Ты ничего не говорил про многих пользователей.
Ну да, наверное я неверно выразился - имелась в виду много задачность.
Кажется, он не говорил о том, что ставит нужному приложению приоритет real-time.
Мне, как рядовому пользователю, должно быть пофиг, как это реализуется!
Если с тз системы для реализации 1. нужен этот самый приоритет - ну пусть поставит.
Мне не жалко - главное, чтобы работало
Значит, всё-таки твои программы могут бороться за ресурсы?
Если бы они этого не делали - наверняка и так бы всё работало - достаточно лишь чуть повысить приоритет активной задачи.
Мне, как рядовому пользователю, должно быть пофиг, как это реализуется!Ты, как рядовой пользователь, должен уметь формулировать конкретные требования. А пока что получается "хочу, чтобы хорошим программам давать процессорЮ а плохим нет" - и без уточнения, какие программы хороши, а какие нет. Реализовать телепатию не получится, уж извини.
Если с тз системы для реализации 1. нужен этот самый приоритет - ну пусть поставит.Ещё раз. Запущено какое-то приложение, оно (неважно, по какой причине) сильно нагружает процессор - так сильно, как только может. С твоим тз выйдет, что, когда ты переключишься в это приложение - выйти сможешь только нажав reset.
Мне не жалко - главное, чтобы работало
Я тут не о проблемах какой-нибудь конкретной реализации говорю, а о некорректности твоего тз.
Я знаю, какой вариант тебя полностью устроит. Это когда активное окно получает весь процессор, а неактивные тупо усыплены сигналом STOP (сняты с очереди выполнения планировщика). Только это будет однозадачная система, как ты понимаешь.
1. пользователь - действия которого надо обрабатывать, и пользователю очень не нравится, когда его начинают игнорировать.
Так пользователь и есть практически то приложение, с которым он сейчас работает.
Так что он не игнорируется ни при каких обстоятельствах
2. устройства - действия которых тоже надо обрабатывать, и им тоже не понравится, что они игнорируются.
Если устройство сейчас реально нужно и на него не хватает ресурсов - это конечно проблема.
Тут как раз необходим либо компромисс, либо повышение системных требований.
С другой стороны, если работа с этими устройствами - часть основной задачи - переживётся, если придётся обоснованно подождать.
А на практике часто бывает, что устройство сейчас нафиг не нужно, зато всё тянет на себя.
Поведение той же ХР при вставке сидишника/дискеты - достаточно показательный пример - даже переключаешься на другую задачу, а пока не раскрутит/прочитает - с ФС не поработаешь
Не имеющие отношения к активной задаче устройства запросто можно ставить в очередь и обрабатывать по возможности.
3. background-ные процессы - например, плейеры - тоже мало кому нравится, если плейер начинает чихать.
Тогда получается, что плеер является большим приоритетом, чем основная выполняемая задача
Я, например, предпочту чтобы звук заткнулся, но основной процесс не тормозил, чем буду под безупречную музыку наблюдать слайдшоу.
А в остальном написанное выше про устройства распространяется и на бэкграунд (устройство=драйвер, который по сути бэкграундный процесс).
Ну вот переключился ты, например, в какое-то нехорошее окно, которое отожрало себе весь процессор. Что делать? Как переключиться назад? Жать reset?
Пользователь прежде всего - пока он работает в этом нехорошем окне - пусть хоть обожрётся.
Как только покинул - пусть перебивается остатками.
А если для переключения необходим резет - это извините не многозадачная ось, а хрень какая-то
Ничего не понял. У текущей задачи очень высокий приоритет, гораздо выше, чем у оконного менеджера; она отжирает весь процессор, оконный менеджер ничего не может делать. Как переключиться на другую?
Значит эта технология (ОСь и/или ВМ) не подходит для реализации 1.
Ясное дело, что происходят аварии, когда поддерживать работоспособность становится трудно
У меня складывается впечатление, что если действительно обеспечить пункт 1., то такая система с авариями должна справляться на раз
"Плохое" приложение не хочет получать ввод, оно просто хочет нагрузить процессор на сто процентов, чтобы ты из него выйти не смог.
Расстрелять из плюсомёта и выбросить
Ни о каком локе системы речь не идёт, иначе не получится обеспечить выполнение задачи по переключению - эта задаче ничем не хуже других.
Ну да, по хорошему надо мониторить, собирать статистику, предсказывать и уточнять прогноз
Как только покинул - пусть перебивается остатками.Как покинуть-то? Текущее приложение отожрало себе весь процессор, кто будет обрабатывать покидание?
Ты, как рядовой пользователь, должен уметь формулировать конкретные требования. А пока что получается "хочу, чтобы хорошим программам давать процессорЮ а плохим нет" - и без уточнения, какие программы хороши, а какие нет. Реализовать телепатию не получится, уж извини.
Не было ни про какие хорошие/плохие программы - было лишь активное приложение и всё остальное - что непонятно?
Запущено какое-то приложение, оно (неважно, по какой причине) сильно нагружает процессор - так сильно, как только может. С твоим тз выйдет, что, когда ты переключишься в это приложение - выйти сможешь только нажав reset.
Я уже писал про вырожденные решения и что с ними делать
Вполне понятно, что если текущая задача реально не может работать в риалтайме на этом железе, то ничего не остаётся, кроме как выполнять её с тормозами, ну или апгрейдить железо.
И если при этом такая задача способна повесить системы - такой системе место на свалке.
Если активное приложение всё не потребляет - остальное не должно пропадать.
То есть получается, что всех остальных надо ставить в идл.
Значит эта технология (ОСь и/или ВМ) не подходит для реализации 1.Где я в своём посте говорил хоть что-то о конкретной ОС и/или ВМ?
Скажи ещё "хочу летать со скоростью миллион километров в секунду, вы же учёные, вот и сделайте, детали реализации меня не волнуют". Тебе говорят "но это невозможно, быстрее скорости света никак не получится" - в чём смысл отвечать "значит, технология, которую вы сейчас используете для космических кораблей, не подходит, придумайте что-нибудь другое"?
накладные расходы ОСи я признаю, но в разумных пределах, а не так, что "ой мне срочно приспичило сделать дефрагментацию".Как различать эти две ситуации? Как понять, разумны пределы или нет? Как понять, что дефрагментация - неважно, а переключение окон - важно?
Если последними постами я на вопрос не ответил - ничего кроме перечитать мои посты с начала посоветовать не могу.
В линуксячьем ядре имеется возможность группировать задачи, лимитируя (и гарантируя) долю CPU для каждой.неа. нету.
. Опять-таки в линуксячьем ядре есть возможность задать приоритет I/O (man ionice если задать idle, то воздействие такого процесса на остальные с нормальным приоритетом будет минимальным.работает но хуйово
Где я в своём посте говорил хоть что-то о конкретной ОС и/или ВМ?
Скажи ещё "хочу летать со скоростью миллион километров в секунду, вы же учёные, вот и сделайте, детали реализации меня не волнуют". Тебе говорят "но это невозможно, быстрее скорости света никак не получится" - в чём смысл отвечать "значит, технология, которую вы сейчас используете для космических кораблей, не подходит, придумайте что-нибудь другое"?
Тогда непонятно, зачем столько всего писать, если можно было в первом же посте написать, что это невозможно?
Как различать эти две ситуации? Как понять, разумны пределы или нет? Как понять, что дефрагментация - неважно, а переключение окон - важно?
Вы с какой целью интересуетесь? (с)
Так пользователь и есть практически то приложение, с которым он сейчас работает.Обычно пользователи работают более чем с одним приложением.
Поведение той же ХР при вставке сидишника/дискеты - достаточно показательный пример - даже переключаешься на другую задачу, а пока не раскрутит/прочитает - с ФС не поработаешьЧто значит "с ФС не поработаешь"? Если я правильно понял, о чём ты - то приоритеты не имеют к этому никакого отношения, если ты открываешь какое-то окно, где показывается содержимое "моего компьютера" (напрямую, или через дерево папок, или ещё как-то) - там тебе показывается список дисков с их свойствами, а свойства компакт-диска не получится получить, пока он не раскрутится. Это решается удалением такой точки монтирования для привода.
Не видел, чтобы в такой ситуации тормозило что-то ещё.
Тогда получается, что плеер является большим приоритетом, чем основная выполняемая задачаА теперь давай переформулируем это так.
Я, например, предпочту чтобы звук заткнулся, но основной процесс не тормозил, чем буду под безупречную музыку наблюдать слайдшоу.
Ты сжимаешь большой файл, в фоне играет музыка, плееру нужны полпроцента производительности процессора на декодирование и воспроизведение. Что лучше, чтобы файл сжимался 100 секунд, но всё это время играла музыка - или чтобы архив сжимался всего лишь 99.5 секунд, но на всё это время музыка заткнулась?
Или ты редактируешь офисный документ, нажал "сохранить", процесс сохранения занимает 0.1 секунды. Лучше, наверное, чтобы эти 0.1 секунды играла музыка, чем чтобы она на это время заткнулась, но ты бы сэкономил 0.0005 секунды на этом сохранении?
Не было ни про какие хорошие/плохие программы - было лишь активное приложение и всё остальное - что непонятно?Да, я уже понял, что не ты ввёл эти понятия, ты даже ещё не понял, что они нужны.
Вполне понятно, что если текущая задача реально не может работать в риалтайме на этом железеЧто значит "риалтайм"?
Вот для задачи типа "воспроизвести видео", "воспроизвести музыку", "захватить видео с камеры", "отрендерить 50 кадров игры в секунду" я понимаю "может/не может работать в риалтайме".
Для всех остальных задач нет такого понятия. На каком-то железе задача сделает свою работу быстро, на каком-то медленно, но если ты ей дашь весь процессор - она отожрёт его весь.
ничего не остаётся, кроме как выполнять её с тормозами, ну или апгрейдить железо.Создание архива, сохранение офисного документа, рендеринг страницы форума, подсчёт миллиона знаков числа пи - какой компьютер, кроме разве что квантового, может выполнить такие задачи в риалтайме, и что вообще для них означает "риалтайм"? Какой компьютер не "зависнет" при выполнении такой задачи хотя бы на некоторое время, если ты дашь ей все его ресурсы?
И если при этом такая задача способна повесить системы - такой системе место на свалке.
Тогда непонятно, зачем столько всего писать, если можно было в первом же посте написать, что это невозможно?Я и написал, но тебе это оказалось непонятно.
Обычно пользователи работают более чем с одним приложением.
Но активное приложение (с которым он непосредственно взаимодействует) всегда одно.
Ты сжимаешь большой файл, в фоне играет музыка, плееру нужны полпроцента производительности процессора на декодирование и воспроизведение. Что лучше, чтобы файл сжимался 100 секунд, но всё это время играла музыка - или чтобы архив сжимался всего лишь 99.5 секунд, но на всё это время музыка заткнулась?
Если я жду, когда же этот архив сожмётся, чтобы отправить его по почте и пойти наконец домой (то есть это активная задача) - лучше пусть без музыки.
Но если у меня настроено, что после сжатия архив отправится автоматически и дидлайна нет - какая мне разница, за сколько часов он сожмётся (неактивная задача).
Или ты редактируешь офисный документ, нажал "сохранить", процесс сохранения занимает 0.1 секунды. Лучше, наверное, чтобы эти 0.1 секунды играла музыка, чем чтобы она на это время заткнулась, но ты бы сэкономил 0.0005 секунды на этом сохранении?
В жизни 0.0005 сек ни на что не влияют и заметить их очень сложно.
А вообще я бы наверное предпочёл настроить автосохранение в паузах между композициями
Я и написал, но тебе это оказалось непонятно.
А можно ссылку?
А то что-то в теме не находится?..
Но активное приложение (с которым он непосредственно взаимодействует) всегда одно.Что значит "непосредственно"? А с плеером, когда музыку слушает, он, что ли, не непосредственно взаимодействует?
Если я жду, когда же этот архив сожмётся, чтобы отправить его по почте и пойти наконец домой (то есть это активная задача) - лучше пусть без музыки.Лучше сэкономить полсекунды, но сидеть полторы минуты без музыки? Эти полсекунды вообще хоть какое-нибудь значение имеют? А пять секунд при продолжительности сжатия 15 минут?
В жизни 0.0005 сек ни на что не влияют и заметить их очень сложно.Ага, а вот затыкание музыки на 0.1 секунды заметить уже очень легко и неприятно. Ты всё ещё считаешь, что редактору надо отдавать весь процессор без исключения?
А вообще я бы наверное предпочёл настроить автосохранение в паузах между композициямиО, уже начинаем костыли втыкать. Кстати, композиции бывают и длиной по полчаса; а ещё существует такое понятие, как гаплесс.
Да, я уже понял, что не ты ввёл эти понятия, ты даже ещё не понял, что они нужны.
В моей постановке эти понятия не нужны:
1. Если программа откровенно кривая - не стоит ею пользоваться вообще;
2. Если она просто жадная - система, решающая 1., должна и так жадность поубавить.
Вот для задачи типа "воспроизвести видео", "воспроизвести музыку", "захватить видео с камеры", "отрендерить 50 кадров игры в секунду" я понимаю "может/не может работать в риалтайме".
Для всех остальных задач нет такого понятия. На каком-то железе задача сделает свою работу быстро, на каком-то медленно, но если ты ей дашь весь процессор - она отожрёт его весь.
Да ладно.
Грубо говоря, работа в ворде является риалтайм, пока отклик на все действия достаточно низкий (не знаю, сколько там по юзабилити полагается).
Создание архива, сохранение офисного документа, рендеринг страницы форума, подсчёт миллиона знаков числа пи - какой компьютер, кроме разве что квантового, может выполнить такие задачи в риалтайме, и что вообще для них означает "риалтайм"? Какой компьютер не "зависнет" при выполнении такой задачи хотя бы на некоторое время, если ты дашь ей все его ресурсы?
Часть из этих задач - явные фоновые: Создание архива, подсчёт миллиона знаков числа пи.
Другая часть может быть решена умнее. Например:
а. Сохранение документа: если иметь периодические сохранения + журнал операций с последнего сохранения - любое пожелание по сохранению документа обрабатывается мгновенно - одной записью, а реальное сохранение можно провести потом в фоне;
б. Рендеринг страницы форума может быть сделан как предварительно, так и в сторону улучшения детализации с выводом в начале грубого рендера.
Но эти задачи так же могут оказаться и под силу компу для обработки в риалтайме в смысле юзабилити.
2. Если она просто жадная - система, решающая 1., должна и так жадность поубавить.Не понял, каким образом первый пункт поубавит жадность программы с активным окном? Ты же наоборот, собрался у всех остальных приложений ресурсы отбирать, чтобы дать жадной.
Грубо говоря, работа в ворде является риалтайм, пока отклик на все действия достаточно низкий (не знаю, сколько там по юзабилити полагается).Что значит "достаточно низкий"?
Я уже привёл пример - действие занимает 0.1 секунды, это низко; экономия может составить 0.0005 секунды - это вообще несущественно; а вот музыка заткнётся на 0.1 секунды - это очень много.
б. Рендеринг страницы форума может быть сделан как предварительно, так и в сторону улучшения детализации с выводом в начале грубого рендера.Я зашёл на страницу, она скачалась, надо её рендерить. Что значит "предварительно"?
Часть из этих задач - явные фоновые: Создание архива, подсчёт миллиона знаков числа пи.Это были всего лишь примеры. На самом деле, для подавляющего большинства задач (не в смысле приложения, а в смысле конкретной операции приложения) понятие "риалтайм" бессмысленно (тот "юзабилити риалтайм", который ты тут пытаешься ввести, не формализуем и не вычисляем). Этим задачам надо выполнить конкретное количество работы, и, сколько мощности ты им не дашь - всю заиспользуют (но, чем больше мощность - тем меньше время выполнения).
Стоит ли уменьшать время выполнения какой-то мелкой задачи активного приложения на полпроцента ценой того, что всё это время музыка не будет играть? Разве что для ненормального; а нормальный человек скажет "да срать мне на эти полпроцента".
Значит, нужно уметь отличать приложения, для которых понятие риалтайма имеет смысл (фильм, музыка, голосовое общение, видеоигра) - это не формализуемо, так что придётся ставить им приоритет "риалтайм" руками. А для активной задачи действительно имеет смысл ставить приоритет повыше - но только повыше, а не риалтайм.
Сделать же просто заебись не получится, потому что это не формализуемо, компьютер - не телепат, и понять, что именно для тебя в данный момент будет заебись, не сможет.
повысить приоритет у window-manager'а и у активного приложения
через некоторое время тебя задолбает, что у тебя плейер крякает от кратковременных потребностей активной задачи и ты добавишь в список "привилегированных" ещё и плейер и при необходимости зазиповать файл на 1% быстрее будешь его выключать самостоятельно
в любом случае, ты можешь запрогать любую логику изменений приоритетов в зависимости от потребностей приложений и от положения их окон (какое активно). Вопрос скорее в том, как бы эта логика тебе во вред не вышла.
Всем спасибо, буду пробовать
Оставить комментарий
durka82
Может уже создали операционную систему, которая удовлетворяет следующим требованиям - с удовольствием бы на неё посмотрел:1. Активное приложение ВСЕГДА должно получать ДОСТАТОЧНО ресурсов! То есть не важно, что там крутится в фоне, но если активному (то есть с которым я работаю) приложению приспичило что-то сделать, ОСь должна бросить всё и выполнить
В той же ХР если какое приложение в фоне что-то массово пишет на винт, остальное может просто умирать
2. Хочу, чтобы окна сами не активировались НИКОГДА!
Я конечно понимаю, что создатель каждого приложения мечтает, чтобы об его приложении вспомнили сразу, как только оно перестало тормозить, и иногда это даже полезно. Но как правило так задалбывает, когда ты уже и забыл о том тормозящем приложении, и тут бац - оно проснулось, хотя конкретно сейчас оно нафиг не нужно и только мешает
Ещё лучше, если это настраивается (причём в пару кликов)
Ну и конечно если оно таки проснулось, ну пусть на таскбаре помигивает иногда, напоминая, но чтобы можно было никуда не переключаясь это помигивание отменить.
3. (возможно это автоматом получится при выполнении 2.) У мышки есть полезная опция - переносить фокус на кнопку по-умолчанию активного окна.
Вот чтобы такое происходило реально только с активным окном, а не так, что я жму ЛКМ, а нажимаю на кнопку совсем в другом окне
Ну и чтобы такая фишка мыша тоже легко переключалась (но это уже наверняка можно и сейчас настроить)
Просветите пожалуйста!