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

Я не мог придумать существующий инструмент.

grep -F --binary --byte-offset --only-matching кажется, достаточно близок - но Вы не можете выйти из новых строк с -F. И cmp только позволяет пропускать символы. diff также, кажется, не помогает.

Но это - некоторые лайнер на языке программирования с достойной библиотекой. Например, как программа C++ с помощью Повышения:

#include 
#include 
#include 
#include 
using namespace boost;
using namespace boost::algorithm;
using namespace boost::iostreams;
using namespace std;

int main(int argc, char **argv)
{
  if (argc != 3) {
    cerr << "Call: " << argv[0] << " PATTERN_FILE SRC_FILE\n";
    return 3;
  }
  mapped_file_source pattern(argv[1]);
  mapped_file_source src(argv[2]);
  iterator_range p_range(pattern.data(),
      pattern.data() + pattern.size());
  iterator_range s_range(src.data(), src.data() + src.size());
  iterator_range result = find_first(s_range, p_range);
  if (result) {
    size_t pos = result.begin()-s_range.begin();
    cout << pos << '\n';
    return 0;
  }
  return 1;
}

Можно скомпилировать его как это (когда источник программы сохраняется как find.cc):

$ make CXXFLAGS="-Wall -g" LDLIBS="-lboost_iostreams" searchb

Протестировать его:

$ dd if=WTF_-_EPISODE_277_RACHAEL_HARRIS.mp3 of=t skip=232323 bs=1 count=4K
$ ls -l t
-rw-r--r-- 1 juser users 4096 2012-05-31 15:24 t
$ ./searchb t WTF_-_EPISODE_277_RACHAEL_HARRIS.mp3
232323

Вывод является положением соответствия в исходном файле.

Если файл не содержится, статус выхода 1.

Обновление: Тем временем я реализовал этот простой инструмент на нескольких языках (C/C ++/Python/Rust/Go) и включал те реализации в мой служебный репозиторий. Искать searchb*. Реализация Python является самой короткой и не требует никаких внешних зависимостей.

2
28.05.2013, 01:17
4 ответа

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

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

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

Если Вы имеете достаточную RAM и не нуждаетесь в спящем режиме, можно рассмотреть подкачку отключения. При необходимости в спящем режиме... Вам нужна область подкачки тот же размер как Ваш поршень :(. Это, конечно, возможно к сценарию. Официальной поддержке, вероятно, недостает, хотя по крайней мере пополудни-utils имеет хорошую архитектуру для установки Ваших собственных рычагов. (Добавьте пользовательское устройство свопинга, прежде чем приостановят и удалят его после резюме; Вы, возможно, также должны добавить резюме = параметр загрузки).

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

3
27.01.2020, 21:50
  • 1
    Спасибо за разъяснение. Вы знаете, если Ubuntu использует KSM по умолчанию? Я думаю, что это делает, но я не мог найти ссылку. –  Adam Ryczkowski 27.05.2013, 14:38
  • 2
    @AdamRyczkowski, Если Вы говорите о слиянии страницы, можно легко проверить, что просто видят, есть ли у Вас ненулевой shared_pages не запустив сканирование самих. Можно всегда инициировать первое сканирование, если Вы решаете необходимость в нем. –  Bratchley 27.05.2013, 16:22
  • 3
    @Joel. Я имел в виду KMS (извините для опечатки). К счастью, я узнал что-то интересное о ядре... Так, Вы знаете случайно, использует ли Ubuntu KMS по умолчанию? –  Adam Ryczkowski 27.05.2013, 19:01
  • 4
    редактирования, который я не знаю наверняка, но я готов держать пари так. Можно проверить dmesg видеть, загрузился ли прямой материал рендеринга при начальной загрузке и начал работать. Вот пример от моего поля Fedora. –  Bratchley 27.05.2013, 19:09
  • 5
    Какая версия :P Любая последняя версия будет использовать привилегированный режим, переключающийся по умолчанию. Драйвер intel X (я думаю), отброшенная поддержка непривилегированного режима, переключающегося некоторое время назад. Некоторые старые драйверы не поддерживают его вообще все же. –  sourcejedi 27.05.2013, 20:56

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

Рискуя тем, чтобы походить на клише FOSS, в ответ на сравнение сделал с диспетчером задач Windows:

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

Это (рациональное) мышление находится в прямой оппозиции дизайну Окна: поместите все на направляющие, поместив Вас к единственному основному решению, которое можно затем выпустить под брендом собственным, внести несколько основных изменений в конфигурацию, и возможно, если Вы - опытный пользователь, входите и изменяете некоторый "низкоуровневый" материал (Концепция Администраторов Unix "низкого уровня", и Windows Admins значительно отличаются в результате этого различия в дизайне). Администраторам Windows, проверяющим/изменяющим HMAC на Kerberos AD, сервер рассматривают, будучи l33t (По крайней мере, я надеюсь, что средний AD администратор просто не знает об использовании AD хешей MD4), тогда как на Unix HMAC, издевательство пароля, и т.д. является просто частью установки сервера, просто будучи некоторыми из тех вещи, о которых Вы, как предполагается, думаете при разработке решения компании.

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

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

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

Ответить на проблему, хотя:

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

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

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

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

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

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

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

3
27.01.2020, 21:50
  • 1
    я соглашаюсь с одной точкой зрения здесь - при ударе этого много необходимо зафиксировать причину :). Возможно, у Вас нет достаточного количества RAM для вида вещей, которые Вы пробуете. Возможно, необходимо избежать определенных патологических файлов... или удостовериться приложения, которые действуют, патологически не часть среды. Проявите используемый для действия как это, но с тех пор улучшился - и это может открыть размолвки. –  sourcejedi 27.05.2013, 21:58
  • 2
    Ну, если OP имеет аппаратные проблемы мощности, то у него есть фиксация, это просто не один, они могут реализовывать из-за включенных денег. В этом случае содержание проблемы с cgroups является, вероятно, лучшим обходным решением. –  Bratchley 27.05.2013, 22:35

Проблема может быть уменьшена при предоставлении ЦП и приоритета реального времени ввода-вывода к одному из gettys. Можно также создать другого пользователя с UID 0 и сделать его оболочку путем к электронному диску со статически связанной оболочкой. И продолжайте читать /etc/passwd каждые несколько секунд так, чтобы это осталось в кэше.

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

Редактирование 1:

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

2
27.01.2020, 21:50
  • 1
    я буду пробовать их и видеть, какому количеству он действительно помогает.Спасибо! –  Adam Ryczkowski 27.05.2013, 16:14
  • 2
    @AdamRyczkowski Видит мое редактирование. –  Hauke Laging 27.05.2013, 16:20
  • 3
    Да. Я хотел бы видеть его в действии. Я сделаю тестирование после того, как я закончу свою работу. –  Adam Ryczkowski 27.05.2013, 16:25
  • 4
    @HaukeLaging, которым Одна вещь отметить состоит в том, что процессы, запущенные в этом tty, наследуют оперативный приоритет (и для ввода-вывода и для ЦП), таким образом, будет желательно только использовать это для тиражирования упомянутого поведения с Windows Task Manager. Если Вы не рассматриваете его как аварийный люк, и Вы случайно начинаете налоговую операцию, от которой tty вещи могли ухудшиться (приоритет ввода-вывода для каждого процесса также предполагает cfq, и это не существует на других планировщиках ввода-вывода). –  Bratchley 27.05.2013, 16:26
  • 5
    @JoelDavis Вот почему, мое предложение (на немецком языке и с pre-systemd возраста, хотя) содержит предупреждение, которое выдано при входе в систему той оболочки. :-) hauke-laging.de/software/emergency-root-shell –  Hauke Laging 27.05.2013, 17:16

Поскольку Вы отметили, что 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

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

2
27.01.2020, 21:50
  • 1
    К сожалению, у меня была большая подкачка на жестком диске (+ zram), таким образом, это даже не близко к условию OOM. Но, чем, возможно, я должен обрезать подкачку. Слишком плохо, то, что это потребовало бы повторного разделения целого жесткого диска... –  Adam Ryczkowski 27.05.2013, 17:01
  • 2
    @AdamRyczkowski I всегда LVM каждый раздел кроме раздела начальной загрузки поэтому. Могла бы быть хорошая практика для принятия. –  Patrick 27.05.2013, 17:22
  • 3
    @patrick Вы правы, и я думаю, что преувеличил с материалом разделения; у меня есть GPT, и все около подкачки - btrfs, поэтому на самом деле будет довольно легко изменить размер подкачки. Я просто был удивлен к мысли, что системные замораживания под перегрузкой памяти имеют некоторое отношение к схеме выделения разделов :-) –  Adam Ryczkowski 27.05.2013, 18:45
  • 4
    @AdamRyczkowski btw, Вам технически не нужен раздел подкачки. Существуют крайние выигрыши в производительности к использованию parition по файлу (иногда делает математическое смещение преобразования в источнике подкачки к сектору более прямым), но если диспетчер памяти должен перейти к диску, это - самая дорогая часть операции безусловно (т.е.: увеличение производительности раздела затмевается). LVM может сделать объемы подкачки, но Вы не можете сделать этого с btrfs. С btrfs (и в целом) Вы могли бы преуспеть для движения с файлом подкачки вместо этого. Это - Windows того же самого, делает. –  Bratchley 27.05.2013, 18:50
  • 5
    Комбинация SysRq непосредственно инициировала уничтожителя OOM независимо от фактических условий памяти. (Это - определенный взлом, да) –  Piskvor left the building 28.05.2013, 16:21

Теги

Похожие вопросы