swap still does make sense

Многие задаются вопросом «нужен ли swap?»

Некоторые, не найдя ответа на этот вопрос, считают, что «swap бесполезен и даже вреден».

— Как я уже неоднократно говорил, как ни странно, swap позволяет эффективнее использовать ОЗУ: «холодные данные» покидают ценную оперативную память, оставляя там место для кэширования «горячих данных».

Разумеется, это не значит, что swap нужен всегда. Например, если весь рабочий набор помещается в ОЗУ, swap будет ни при делах.

Разумеется, если важные для работы OS процессы были вытеснены на диск, в результате (возможно ошибочного) запроса ОЗУ какой-либо программой — у вас, вероятно, проблемы. Отказ от swap в таких ситуациях может иметь смысл, но, вероятно, лишь чуть больше, чем лечение перхоти гильотиной. Современные UNIX-системы (тот же Linux) позволяют эффективно ограничить потребление ресурсов процессами.

(Generally swap is here to make more efficient use of RAM that otherwise would be filled with “cold data” preventing caching hot data and thus impacting performance negatively. This is the primary reason why there’s swap still.)

iTerm2 is brilliant

I can’t stand any other Terminal-emulators now, to be honest…

Mine favourite features it has (among others):

  • quake-like window is a niftie: it’s easy to call/hide terminal (terminals since it allows for Tabs as well)
  • autocomplete is a huge time saver. This is primarily the reason I’m not feeling comfortable with any other Terminals now

    As well as:

  • paste history

Also with iTerm2 I can have Alt-B working (with auto-repeats even) instead of inserting pseudo-graphics bullshit as it’s the case with Terminal and it’s hell lota faster than clicking Esc-B. Ah, since ergonomics isn’t just an empty sound to me I have re-mapped with iTerm2 itself right [alt] key to be right [Ctrl] instead (Macbooks lack of it, alas). Now I can do short-cuts like Control_C/Z/A/S/Q w/o a need to crook my left hand.

Group ratio round-robin: not compiled into Mac OS X?

На тек. момент для Mac OS X доступны как минимум 3 планировщика выполнения процессов: multiq (выбран по-умолчанию), dualq и traditional. В исходниках, однако, есть GRRR (Group ratio round-robin). Но если те 3 действительно можно менять через параметр загрузки ядра, то попытка использовать grrr, увы, обламывается.

SSH tunnel to IPv6 server’s addresses

— пока как сырая идея, но, суть в том, что если на сервере, который доступен по IPv4, есть какие-то IPv6-адресуемые ресурсы, то вполне можно было использовать SSH-канал для доступа к ним по IPv6. Автоматически, разумеется — для конечного пользователя это должна быть, в идеале, такая же команда ssh user@ipv6.host

comment: option can only be used once — WHY?

 1 iptables-restore v1.6.0: comment: option "--comment" can only be used once.

Вообще говоря, возможно, что для некоторых модулей netfilter, повтор опции действительно может быть нежелательным, но вот повторы именно --comment вполне были бы «в тему»:

-A INPUT -j ACCEPT -m comment --comment "MySQL" -p tcp --dport 3306 --comment "from backend:" -s 192.168.10.100

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

transparent huge pages witch hunt

Во множестве различных ресурсов, имеющих мало-мальское отношение к системному администрированию Linux, можно встретить безаппеляционное «transparent huge pages нужно отключить». Это есть в рекомендациях (и хрен бы с ними, рекомендациями, — есть даже в скриптах!) Percona, это есть на сайте Redis: “…

  • Make sure to disable Linux kernel feature transparent huge pages, it will affect greatly both memory usage and latency in a negative way. This is accomplished with the following command: echo never > /sys/kernel/mm/transparent_hugepage/enabled.

…” — don’t do this, they’re wrong. Use “madvise” instead

Я открою Америку этим «пещерным людям» — у этой опции 3 значения. Одно из них — madvise. Практически везде, где вам рекомендуют «отключите» — лучше ставить madvise. Потому, что если в вашей системе запущен какой-то софт, разработчики которого считают, что с THP он будет работать лучше, они используют специальный параметр для системного вызова madvise(). Софт, разработчики которого страдают от THP, madvise() с «нам нужны THP», естественно, использовать не будут. Для них, результат будет таким же, disabled.

btrfs send/receive gotcha: R/O snapshots only!

Вспомнив, что по аналогии с ZFS, для btrfs существует возможность send/receive snapshots, и попытавшись этим воспользоваться, выяснил, что это работает только для R/O snapshots, а не абы каких.

WTF is TXT_DB error number 2 error?

При настройке ключей-сертификатов (easyrsa openvpn) есть неплохие шансы увидеть невразумительную диагностику:

TXT_DB error number 2

Оставив без отдельного комментария внушительную кривизну как OpenVPN, так и OpenSSL, приведу решение:

если в файле index.txt.attr есть строка unique_subject = yes, замените на no.

Beware of LVM-2’s lvs nasty output habbits

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

sudo lvs --noheadings -o lv_name ИмяГруппы

К сожалению, этот тривиальнейший вариант не без граблей: если имена LVM-томов разной длины, то короткие будут дополнены пробелами.

GNU grep strikes again — annotate your output

Если вам приходилось когда-нибудь добавлять метки в текстовый поток, то, вероятно, вы оцените опцию «--label» grep. Скорее всего, пригодится она вам вкупе с «-H»:

cat /etc/hosts | grep -H --label=MyLabelHere .

Пример применения:

sudo vzlist -H1 | \
  xargs -rI: sh -c \
    'sudo vzctl exec : ip ad | grep -H --label=: . ' | \
      fgrep "inet " | fgrep -v 127.0.0.1 | \
        sort -k2 -u

— набор команд позволяет получить все интересные (loopback — неинтересен) IP, назначенные выполняющимся OpenVZ VEs.