|
Использование LTTng для прозрачной трассировки приложений в Ubuntu Linux (доп. ссылка 1) |
[комментарии]
|
| Система трассировки LTTng (http://lttng.org/) работает на уровне Linux-ядра и отличается минимальным влиянием на работу профилируемого приложения, что позволяет приблизить условия работы данного приложения к его выполнению без использования трассировки (например, позволяет выявлять проблемы с производительностью в программах, работающих в реальном режиме времени).
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
|
Запуск процесса с совсем-совсем IDLE приоритетом в Linux |
Автор: СеменСемныч777
[комментарии]
|
| Скрипт для запуска процесса в Linux с минимальным влиянием на работу других процессов:
#!/bin/sh
# куда бы еще /usr/bin/nice впихнуть?
/usr/bin/chrt --idle 0 /usr/bin/ionice -c 3 $* &
XPID=$!
/usr/bin/cpulimit -l 1 -c 1 -b -p $XPID
wait $XPID
В chrt "--idle 0" выставляет режим планировщика SCHED_IDLE с минимальным приоритетом.
В ionice "-c 3" активирует 3 класс (idle) планирования ввода/вывода.
В cpulimit опцией "-l" задаётся допустимый процент использования CPU (в
диапазоне от 0 до 100 * на число процессорных ядер), - "-c" ограничивает число
ядер CPU, "-b" - запускает процесс cpulimit в фоне, "-p" применяет ограничение
для PID уже запущенного процесса. При помощи опции "-i" можно распространить
ограничение и на все дочерние процессы.
Вариант в форме однострочника:
/usr/bin/cpulimit -l 1 -c 1 -f -q -- /usr/bin/nice -19 /usr/bin/chrt --idle 0 /usr/bin/ionice -c 3 $*
|
|
|
|
|
Гитара в Debian и борьба с XRUN |
Автор: Павел Отредиез
[комментарии]
|
| Опыт настройки Debian для повышения качества обработки звука с электрогитары.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Сравнение работающих в пространстве пользователя обработчиков нехватки памяти (доп. ссылка 1) |
Автор: кек
[комментарии]
|
| ++ earlyoom https://github.com/rfjakob/earlyoom
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Оптимизация работы на SSD-накопителе рабочей станции с Fedora Linux (доп. ссылка 1) |
[комментарии]
|
| Включаем для SSD-накопителя поддержку TRIM и отключаем обновление метаданных со временем доступа к файлу. Добавляем в список флагов /etc/fstab опции discard и noatime:
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Сокращение времени загрузки Fedora 17 c 15 до 3 секунд (доп. ссылка 1) |
[комментарии]
|
| Изложенные в данной статье инструкции позволяют сократить до трёх секунд загрузку дистрибутива Fedora 17 с NetworkManager до экрана приглашения входа в систему от GDM. Указанная конфигурация опробована на ноутбуке Lenovo T420s (2x2x Intel Core i5-2540M CPU @ 2.60GHz) и SSD-накопителем Intel SSDSA2BW160G3L.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Советы по увеличению автономной работы ноутбука с Debian/Ubuntu (доп. ссылка 1) (доп. ссылка 2) |
[комментарии]
|
| 1. Включение ALPM позволит сэкономить 1-2 Вт энергии, но может привести к повреждению данных для некоторых устройств.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Управление ресурсами с помощью cgroups (доп. ссылка 1) (доп. ссылка 2) (доп. ссылка 3) |
Автор: Ivan Pogudin
[комментарии]
|
| Cgroups (Control Groups) - обеспечивают механизм для агрегирования множества задач и их будущих потомков в иерархические группы с определенным поведением. Так начинается документация посвященная cgroups поставляемая с ядром Linux. Собственно это и есть достаточно ёмкое описание технологии. Но конечно же его не достаточно.
Небольшое отступление, необходимо привести конфигурацию программного обеспечения на которой выполнялись примеры - это ОС Debian GNU/Linux 6.0.1.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Оптимизация отзывчивости десктоп-системы через использование cgroup в Linux (доп. ссылка 1) (доп. ссылка 2) |
Автор: Stax
[комментарии]
|
| По заявлению одного из разработчиков из компании Red Hat добиться эффекта существенного повышения отзывчивости десктоп-систем в условиях большой фоновой нагрузки, связанной с запуском ресурсоемких задач, можно через использование cgroup без [[https://www.opennet.ru/opennews/art.shtml?num=28671 дополнительных патчей]] Linux-ядра. Более того, [[http://lkml.org/lkml/2010/11/16/392 утверждается]] что cgroup-метод работает даже лучше патча с привязкой групп планирования к TTY.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Тюнинг нагруженного CentOS севера при помощи ktune (доп. ссылка 1) |
[комментарии]
|
| В репозитории CentOS присутствуетпакет ktune, содержащий набор готовых настроек для оптимизации работы ядра
на машинах с большим размером ОЗУ в ситуациях повышенной сетевой и дисковой нагрузки.
Например, ktune увеличивает размер TCP/IP буферов, включает планировщик ввода/вывода deadline,
устанавливает оптимальные значения для pagecache и т.п.
Полный список настроек можно найти в файлах /etc/sysctl.ktune и /etc/sysconfig/ktune
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Решение проблемы с потерей пакетов в tcpdump в Linux (доп. ссылка 1) |
Автор: Kirill Korinsky
[комментарии]
|
| При записи пакетов используя tcpdump на больших скоростях возможна потеря пакетов.
Для 1 гигабита помогли такие изменения в /etc/sysctl.conf:
net.core.rmem_default = 33554432
net.core.rmem_max = 33554432
net.core.netdev_max_backlog = 16384
|
|
|
|
|
Уменьшение времени загрузки Ubuntu Linux (доп. ссылка 1) (доп. ссылка 2) |
[комментарии]
|
| 1. Уменьшение таймаута в grub,
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Уменьшение времени запуска программ в Ubuntu при помощи prelink и preload (доп. ссылка 1) (доп. ссылка 2) |
[комментарии]
|
| Prelink позволяет уменьшить время загрузки приложений, слинкованных со множеством динамических библиотек,
путем оптимизации на уровне структуры ELF файла.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Как минимизировать влияние бэкап-скрипта на интенсивность ввода/вывода в Linux (доп. ссылка 1) |
[комментарии]
|
| Задача сделать так, чтобы выполнение скрипта для бэкапа не сказывалось на производительности приложений
с интенсивными дисковыми операциями.
Решение - понижение приоритета скрипта в планировщике ввода/вывода CFQ, который включен в Linux ядро,
начиная с версии 2.6.13, и используется по умолчанию начиная с 2.6.18.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Как в Linux привязать процесс к CPU и установить атрибуты планирования (доп. ссылка 1) |
[комментарии]
|
| При необходимости увеличить производительность определенного процесса в системе,
можно жестко привязать его к определенному CPU (CPU affinity), исключив
ситуацию мигрирования между процессорами, а также изменить для него алгоритм работы
планировщика задач и увеличить приоритет.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Оптимизация структуры директорий в файловых системах ext2 и ext3 (доп. ссылка 1) |
[обсудить]
|
| Опция "-D" утилиты e2fsck позволяет выполнить переиндексацию при использовании
dir_index (tune2fs -O +dir_index),
иначе выполнить перекомпановку с сортировкой (когда было создано или удалено
большое количество директорий) и сокращением размера (когда в
директории было много файлов, а потом их удалили).
Пример запуска (/dev/sdb1 должен быть отмонтирован или переведен в режим только для чтения):
# e2fsck -D -f /dev/sdb1
|
|
|
|
|
Ускорение работы сетевого интерфейса в Linux на SMP системах (доп. ссылка 1) |
Автор: Kir Kolyshkin
[комментарии]
|
| Если привязать прерывание от сетевой карты на один CPU, то пропускная способность Fast Ethernet
возрастает примерно на 15% (измерения проводились на 2.4 ядре, но справедливо и для ядер 2.6).
Определяем прерывание сетевой карты:
cat /proc/interrupts
Привязываем к определенному CPU:
echo 2 > /proc/irq/NNN/smp_affinity
где NNN -- прерывание от сетевухи, 2 - битовая маска для выборка CPU.
если сетевухи две, для второй
echo 4 > /proc/irq/MMM/smp_affinity
Битовые маски: 1 - CPU1, 2 - CPU2, 4 - CPU3 и т.д.
Подробнее см. Documentation/IRQ-affinity.txt
При включении демона irqbalance значения smp_affinity выбираются динамически.
|
|
|
|
|
Приоритезация ввода/вывода в Linux (доп. ссылка 1) |
Автор: Андрей Авраменко
[комментарии]
|
| Приоритеты для использования Disk I/O
С выходом CFQ v3 в Linux 2.6.13 появилась возможность выставлять
приоритеты использования дисковой подсистемы для процессов, чего
раньше так не хватало. Подобно утилите nice для назначение
приоритетов использования процессора появилась утилита ionice.
Синтаксис команды прост:
ionice -c класс -n приоритет -p PID
Класс:
3 - Idle - Получает приоритет на использование жесткого диска только
когда другие программы ничего не пишут. Приоритеты не используются.
2 - Best Effort - Класс по-умолчанию. Доступные приоритеты [0-7].
1 - Real Time - Дает преимущественный доступ к диску процессу, не
смотря на другие процессы. Доступные приоритеты [0-7].
|
|
|
|
|
Как очистить кэш файловой системы в Linux ядре (доп. ссылка 1) |
[комментарии]
|
| Начиная с Linux ядра 2.6.16 появилась возможность принудительной очистки системных кэшей:
Чистим pagecache:
echo 1 > /proc/sys/vm/drop_caches
Чистим dentrie и inode кэши:
echo 2 > /proc/sys/vm/drop_caches
Чистим pagecache, dentrie и inode кэши:
echo 3 > /proc/sys/vm/drop_caches
Перед выполнением операции необходимо запустить команду sync
|
|
|
|
|
Тюнинг TCP стека в Linux (доп. ссылка 1) |
[комментарии]
|
| Увеличиваем максимальный размер памяти отводимой для TCP буферов:
(16Мб на порядок больше, чем нужно, следует экспериментальным путем подобрать
оптимальные значения, понеменогу увеличивая параметры заданные по умолчанию)
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Привязка процесса к определенному CPU в SMP системе под Linux (доп. ссылка 1) |
Автор: nixcraft
[комментарии]
|
| Пример использования жесткой привязки процесса к определенному процессору (CPU affinity).
Устанавливаем пакет schedutils
(Debian: apt-get install schedutils, Red Hat: up2date schedutils или rpm -ivh schedutils*)
Привязка процесса с pid 13545 к первому CPU (#0):
taskset -c 1 -p 13545
к 3 и 4 CPU (#2 и #3):
taskset -c 3,4 -p 13545
Загрузку процессоров в SMP системе удобно оценивать через утилиту mpstat из пакета sysstat.
mpstat -P ALL
Утилизацию подсистемы ввода/вывода можно посмотреть через команду iostat
|
|
|
|
|
Как преодолеть ограничение в 32 группы на пользователя в Linux |
[обсудить]
|
| В 2.2.x и 2.4.x Linux ядрах максимальное число групп в которые может входить
один пользователь ограничено 32. Для 2.6.x лимит снят.
Решение - пересборка ядра, при необходимости glibc и других утилит.
Инструкции:
http://radu.rendec.ines.ro/howto/32groups.html
http://www.ussg.iu.edu/hypermail/linux/kernel/9907.1/0074.html
|
|
|
|
|
Как увеличить максимальное число процессов для 2.2.x Linux ядра |
[обсудить]
|
| vi /usr/src/linux/include/linux/tasks.h
#define NR_TASKS 512
#define MAX_TASKS_PER_USER (NR_TASKS/2)
|
|
|
|
|
Чем хороши LVM, ext3, reiserfs и xfs (доп. ссылка 1) |
Автор: Денис Смирнов
[комментарии]
|
| LVM - позволяет гибко создавать, удалять и изменять размеры разделов без потери данных.
ext3 - расширение ext2 для журналирования. Поддерживает журналирование данных,
а не только метаданных (при data=journal).
reiserfs - высокая скорость работы с каталогами с большим числом файлов,
компактно хранит хвосты от файлов,
поддерживает увеличение размера раздела без остановки сервера.
xfs - быстрая работа с файлами большого размера, великолепная надёжность, поддержка ACL.
|
|
|
|
|
Включение Hyper-Threading scheduler в Linux, для CPU Xeon. (доп. ссылка 1) |
[комментарии]
|
| Linux поддерживает Hyper-Threading начиная с ядра 2.4.17.
Ядро должно быть собрано как SMP,
При загрузке, передаем параметр acpismp=force (в lilo: append=" acpismp=force")
проверка работы:
cat /proc/cpuinfo, если среди flags есть "ht", то Hyper-Threading активирован.
|
|
|
|
|
Как оптимизировать подсистемы распределения памяти в Linux. |
[обсудить]
|
| /usr/src/linux/Documenation/sysctl/vm.txt
/usr/src/linux/Documenation/filesystems/proc.txt
Параметры для работы демона bdflush (vm.bdflush)
echo "100 2000 128 512 500 5000 60 0 0" > /proc/sys/vm/bdflush
Управление объемом ОЗУ (в %) выделенного для системных буфферов (лучше не трогать)
echo "70 10 60" > /proc/sys/vm/buffermem
Максимальный размер сегмента shared memory.
echo 167772160 > /proc/sys/kernel/shmmax # (def: 33554432)
|
|
|
|
|
Оптимизация TCP/IP стека в Linux для нагруженного сервера. |
[комментарии]
|
| /usr/src/linux/Documenation/filesystems/proc.txt
/usr/src/linux/Documenation/networking/ip-sysctl.txt
Далее в скобках указаны значения по умолчанию для 2.2.x/2.4.x ядер.
Если ядро собрано с CONFIG_SYNCOOKIES для защиты от syn флуда (net.ipv4.tcpsyn_cookies)
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Оптимизация дисковой подсистемы в Linux |
[обсудить]
|
| man hdparm (например: /sbin/hdparm -c3 -d1 -X34 /dev/hda)
man elvtune
man tune2fs
echo 128000 > /proc/sys/fs/inode-max # def 16384
echo 64000 > /proc/sys/fs/file-max # def 4096 Число одновременно открытых файлов.
cd /proc/sys/fs/ (в 2.4.x работает автотюнинг)
/usr/src/linux/Documentation/sysctl/fs.txt
/usr/src/linux/Documentation/filesystems/proc.txt
|
|
|
|
|
Как под Linux создать ramdisk большого размера для использования в качестве временного хранилища. |
[комментарии]
|
| Советую использовать tmpfs или ramfs
(разница в том, что данные tmpfs подвержены своппингу, ramfs создана для
тестов, а ramdisk всегда хранится в ОЗУ)
/usr/src/linux/Documentation/filesystems/tmpfs.txt
mount -t tmpfs -osize=256M /dev/shm1 /mnt1
Для ramfs:
mount -t ramfs -omaxsize=256M none /mnt1
Если желание использовать ramdisk осталось, читаем
/usr/src/linux/Documentation/ramdisk.txt
mkdir /ramdisk
Для 256Мб ramdisk в lilo.conf добавляем:
append="ramdisk_size=256000"
Запускаем lilo и перезагружаем машину.
mke2fs /dev/ram0
mount -t -ext2 /dev/ram0 /ramdisk
|
|
|
|
|
Как увеличить количество shared memory для работы высоконагруженного PostgreSQL |
[комментарии]
|
| В linux:
echo 134217728 >/proc/sys/kernel/shmall
echo 134217728 >/proc/sys/kernel/shmmax
В конфиге ядра FreeBSD:
options SYSVSHM
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Эксперименты по борьбе с утечками памяти Telegram Desktop (доп. ссылка 1) |
Автор: nuclight
[комментарии]
|
| Известны жалобы о больших утечках памяти в Telegram Desktop на Linux, не
наблюдаемых в таких же объемах на других ОС, в частности Windows и FreeBSD. В
рамках проверки гипотезы о том, что дело в реализации системного аллокатора и
настройках автопроигрывания медиа, помогающие автору TDesktop энтузиасты
создали канал https://t.me/tdesktop_crash, продолжительная прокрутка которого
должна приводить к утечкам памяти. При этом при нормальном поведении закрытие
этого окна (переключение на другой чат) должна освобождать память.
Выяснилось, что на Windows при переключении чата память освобождается, на
обычном Linux glibc - не освобождаются несколько Гб, но происходит почти полное
освобождение через некоторое время, если запустить Telegram Desktop с
аллокатором jemalloc из FreeBSD (пример для Debian, подробности
см. в документации jemalloc):
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 telegram-desktop
Аналогичные (или даже лучше) результаты были получены на дистрибутивах без
glibc, например Alpine, где применяется musl.
Поскольку в разных дистрибутивах могут быть разные политики по сборке
(статически и без), и майнтейнеры могут испытывать проблемы с включением
решения, а современные аллокаторы сложны, и, возможно, glibc malloc может быть
соответствующим образом настроен, к экспериментам и помощи приглашаются знатоки.
|
|
|
|
|
Решение проблемы с повышенным энергопотреблением при использовании Linux-ядер 2.6.38 и 2.6.39 (доп. ссылка 1) |
[комментарии]
|
| В используемом в Ubuntu 11.04 и Fedora 15 Linux-ядре 2.6.38, а также в 2.6.39 и
тестовых версиях 3.0-rc наблюдается возрастание энергопотребления на 10-30%.
Кроме Phoronix подобная тенденция наблюдалась в тестах издания Tom's Hardware.
По предварительным данным, одна из приводивших к повышению энергопотребления проблем
связана
с изменением в коде поддержки ASPM (Active-State Power Management) для плат
PCI Express, который стал активироваться только при сигнализации о поддержке
ASPM со стороны BIOS (определенные реализации BIOS указывают, что ASPM не
поддерживается, но все равно инициализирует данную поддержку для некоторых устройств).
Экспериментальным путем был выявлен обходной путь решения проблемы, который
позволяет уменьшить энергопотребление в среднем на 15%. Для решения проблемы
систему следует загрузить передав ядру в интерфейсе загрузчика GRUB параметр "pcie_aspm=force".
|
|
|
|