Как убедиться, что определенная функциональность (например, Alt + Ctrl + F1, переключение в tty) доступна в системе обмена файлами?

В настоящий момент, когда я случайно запускаю приложение, которое ест много памяти (что приводит к серьезной замене системы), система становится настолько безответной (часы ожидания просто для того, чтобы увидеть движение мыши / или переход на tty1 с помощью Alt + Ctrl + F1 ), что это эффективно означает, что мне нужно REISUB (= жесткая перезагрузка) и потерял ВСЕ мою текущую, а не сохраненную работу.

В мире Windows некоторые части ядра никогда не заменяются (например, перемещение мыши или комбинация Alt + Ctrl + Del ), и даже в очень плохой ситуации нехватки памяти я могу восстановить менее чем за 5 минут, вызвав Task Manager и убив оскорбительное заявление.

Конечно, я, должно быть, что-то упускаю, я не могу себе представить, что вся система Linux может быть поставлена ​​на колени с чем-то таким простым и невинным, как предварительный просмотр с помощью imagemagick многостраничной книги tiff (imgemagick происходит для загрузки всех страниц изображения сначала несжатый в память …)

Я слышал об экспериментальном планировщике ввода-вывода BFQ , может быть, это могло бы помочь?

  • Модуль ядра VirtualBox, устанавливающий проблему
  • Сценарий / init (или / linuxrc) создает временные узлы устройства в / dev?
  • Зачем мне нужен ntfs-3g, когда я уже включил поддержку NTFS в ядре?
  • Pinnacle TV-тюнер, ошибка чтения, dvb_register не удалось, cx8802 не удалось пробить, прошивка никогда не загружается
  • Пользовательское ядро ​​для отключения SATA и USB-устройств
  • Почему сегменты данных и кода полностью перекрываются в Linux?
  • Как загрузчик и ядро ​​взаимодействуют после загрузки ядра в память?
  • Черный список модуля ядра не работает
  • 4 Solutions collect form web for “Как убедиться, что определенная функциональность (например, Alt + Ctrl + F1, переключение в tty) доступна в системе обмена файлами?”

    Поверь. :(. Я предполагаю, что мы рассматриваем однопользовательскую систему здесь, поэтому SaK (убить весь ваш логин) действительно не помогает.

    Знайте свои показатели активности на жестком диске. Знайте, как быстро что-то сделать. Иногда это может спасти вас, иногда это не так.

    Сделка работает с трудом. Теперь оперативная память быстрее и больше, жесткие диски больше, но относительная скорость (и, в частности, произвольный доступ) ужасна. Windows приложила немало работы, чтобы установить верхнюю границу ужаса. Linux не имеет и позволяет вам снимать себя.

    Если у вас достаточно оперативной памяти и не требуется спящий режим, вы можете рассмотреть возможность отключения обмена. Если вам нужна спячка … вам нужно пространство подкачки того же размера, что и ваш баран 🙁 Конечно, это возможно для скрипта. Официальной поддержки, вероятно, не хватает, хотя по крайней мере pm-utils имеет хорошую архитектуру для установки ваших собственных крючков. Добавьте пользовательское устройство подкачки перед приостановкой и удалите его после возобновления, вам также может потребоваться добавить параметр resume = boot).

    Тем не менее, ctrl + alt + f1 будет работать лучше, если вы переключитесь на режим ядра. (В противном случае X-сервер должен выполнить некоторую работу, и это процесс пользовательского пространства. Все ядро ​​всегда находится в ОЗУ, в отличие от Windows, где некоторые части могут быть заменены). Двоичные драйверы, такие как nvidia, здесь не ваш друг.

    Во-первых, извините за длину этого сообщения

    В риске звучать как клик FOSS в ответ на сравнение с диспетчером задач Windows:

    Одна вещь, которая упростит понимание того, почему некоторые вещи в GNU / Linux разработаны так, как они есть, – это просто напомнить себе, что Windows не является ориентиром для большинства дистрибутивов Linux (кроме, возможно, Ubuntu). Например, Red Hat – это миллиардная корпорация, но они попали туда, продавая себя корпоративным пользователям как доступную более легкую в использовании альтернативу традиционным (проприетарным) производителям Unix и конкурируя с такими ОС, как HP-UX Solaris, AIX и т. Д. Большинство развертываний Unix находятся в высокопроизводительных центрах обработки данных, поэтому Unix был разработан с квадратного с идеей о том, что любой, кто выполняет техническое обслуживание, будет обладать определенным техническим ноу-хау и будет оценивать такие вещи, как системная инертность, четко определенные процессы преобразования , и высокий уровень гранулированного контроля.

    Это (рациональное) мышление находится в прямом противоречии с дизайном Window: ставьте все на рельсы, ставя вас на одно базовое решение, которое вы затем можете использовать как собственное, внести несколько базовых изменений в конфигурацию, и, возможно, если вы продвинутый пользователь, заходите и меняйте некоторые «низкоуровневые» вещи (концепция Unix Admins «низкий уровень» и администраторы Windows значительно отличаются в результате этой разницы в дизайне). Администраторам Windows, проверяющим / изменяющим HMAC для сервера Kerberos AD, считается l33t (по крайней мере, я надеюсь, что средний администратор AD просто не знает о том, как AD использует хэши MD4), тогда как в Unix HMAC, пароль hasting и т. Д. Является лишь частью настройки сервер, просто являясь некоторыми из тех вещей, о которых вы должны думать при разработке решения вашей компании.

    Это не означает, что перенос вещей на рельсы, чтобы сократить время, затрачиваемое на развертывание, обязательно является плохим, иногда вам просто нужно решение, а стоимость, предоставляемая административным контролем, не делает этого уровня очевидности стоящим. Вот почему Red Hat по-прежнему разрабатывает такие вещи, как FreeIPA (управление точками и кликами Identity) и ktune (базовая настройка производительности, выбирая «профиль», который наилучшим образом соответствует вашему предполагаемому использованию системы). Но с точки зрения Unix большинство продуктов MS считаются программным обеспечением, которое поощряет плохую административную трудовую этику (дезинформируя вас о том, какой рабочий процесс наиболее эффективен), особенно если он используется для буквально каждой проблемы, возникающей на вашем столе. Это облегчает вашу работу, но вы ограбите своего работодателя от эффективности.

    Я мог бы немного рассказать об этом (слишком поздно, верно?) И начать говорить о некоторых вещах, которые Windows делает, не имеет технического смысла, но все равно реализована, но вы поняли эту идею.

    В Unix / Linux-админах есть много сундуков и поклонов в отношении дизайна Window (а некоторые из них просто «ненавистники будут ненавидеть» или «эго» поглаживают со стороны говорящего), но если вы вникнете в аргумент достаточно долго, вы увидим, что существует фундаментальный идеологический разрыв в отношении того, как должна себя вести ОС и каков должен быть ваш стиль управления.

    Чтобы ответить на этот вопрос, хотя:

    Это не дефицит дизайна, который Linux позволяет системе увязнуть в этом, это выбор дизайна. Вы можете спорить о дефолтах, но Unix разработан с идеей, что администратор должен понимать , что именно делает система. В большой рабочей среде «это просто, как Unix делает это», это не приемлемый ответ. Ваш босс захочет быть уверенным, что вы точно знаете, что произошло, когда возникла проблема, и что у вас есть проблема на фундаментальном уровне, чтобы она не возвращалась снова.

    С ожиданием того, что администратор будет оценивать явную и системную инертность по сравнению с непрозрачными автоматизированными процессами платформы, до администратора может быть определено, какое решение они хотят реализовать (как поставщик программного обеспечения, с которым вы никогда не взаимодействуете напрямую, знает, что ваша компания потребности и обеспечить его из коробки?). Unix / Linux предоставляет основные механизмы для вашей работы (надеюсь, те, которые не позволяют вам быть избыточными, «СУХОЙ» и все такое), но они не будут пытаться разработать окончательное решение для вас.

    Что вам может быть интересно, так это поиск механизмов ядра, таких как OOM killer, которые будут убивать процессы убегания как общесистемного, так и на основе каждого процесса (см. Предыдущий пример того, как это сделать). В настоящее время группы являются предпочтительным механизмом контроля использования ресурсов, но limits.conf существует довольно долгое время и может устанавливать лимиты на основе имени пользователя или группы (но это зависит от сеанса).

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

    Если это не так, вам нужно что-то сделать с группами или limits.conf, чтобы все программное обеспечение вызывало эту проблему и не приводило систему в порядок. Это в отличие от ожидаемого поведения Windows, где (в данном случае) они действительно не дают вам выбора или отказа, они просто просто делают это одним способом, и если это не идеально для того, как вы думаете или для бизнес-процессов, тогда вам просто нужно научиться справляться с этим. Многие дизайны Windows скрывают преднамеренный выбор дизайна для достойных админов, говорящих нетехническим людям (добросовестно), что «это просто не то, как работает система», или «это не то, как работают компьютеры», что в основном представляет собой набор логических ошибок они поощряют администраторов принимать участие.

    В конечном счете, вам нужно заботиться о том, чтобы устранить проблему, а также сдержать ее и выйти из нее. Для разработки платформы я мог видеть аргумент для добавления Xorg и его потомков в какую-то группу по умолчанию, которую вы могли бы настроить, но вам придется взять это с помощью Canonical (я предполагаю, что это на Ubuntu из ваших других комментариев ). Существует одна основная причина, по которой эта проблема возникает, и ее необходимо решить с помощью одного из следующих: 1) дополнительного аппаратного обеспечения 2) ограничения / распределения доступа приложения к указанной емкости; 3) устранения ошибок на уровне приложений, таких как утечки памяти или ошибки программного обеспечения.

    Идея Хауке о том, чтобы вырезать конкретный tty для восстановления системы, на самом деле довольно хороша, учитывая то, что вы говорите, что предпочитаете. Я добавил к нему добавление, чтобы сделать его еще ближе к знаку. Это конкретное решение, которое вы можете разработать для себя, но есть почти бесконечный набор перестановок, которые вы могли бы выяснить для себя.

    Проблема может быть уменьшена, если вы отдаете приоритет CPU и I / O в реальном времени для одного из gettys. Вы также можете создать другого пользователя с UID 0 и сделать его оболочкой путь к ramdisk со статически связанной оболочкой. И продолжайте читать /etc/passwd каждые несколько секунд, чтобы он оставался в кеше.

    Лучшим подходом может быть запуск процесса, который останавливает процессы, которые потребляют много ОЗУ.

    Изменить 1:

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

    Поскольку вы отметили, что SysRq все еще отвечает, вы можете настроить приоритет OOM для процессов оскорбительных процессов. Настройка выполняется путем записи в /proc/XYZ/oom_score_adj , где XYZ является идентификатором процесса. Если процессы выйдут из-под контроля, уничтожьте один из них с помощью AltGr + SysRq + F, если это необходимо.

    Вот мой скрипт, который делает это:

     #!/bin/bash # match any process containing "thunderb" or "chrome" - that's specific enough for me for i in `ps ax | grep -E 'thunderb|chrome' | cut -f1 "--delimiter= "` ; do fname=/proc/$i/oom_score_adj if [ -f "$fname" ] ; then # the higher the score, the more likely the process is # to be chosen by the OOM killer echo '900' > $fname fi done 

    Обратите внимание, что вам нужно запустить этот скрипт как root, и он затронет только уже существующие процессы.

    Linux и Unix - лучшая ОС в мире.