← Назад к вопросам

Как создать tuning в Linux?

2.0 Middle🔥 102 комментариев
#Linux и администрирование

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Настройка производительности (Tuning) в Linux

Создание tuning в Linux — это комплексный процесс оптимизации параметров ядра, подсистем ввода-вывода, сети и управления ресурсами для достижения максимальной производительности под конкретную нагрузку. Вот основные аспекты и инструменты.

1. Оптимизация параметров ядра через sysctl

Параметры ядра настраиваются через /etc/sysctl.conf или файлы в /etc/sysctl.d/. Например, настройка TCP-стэка для веб-сервера:

# Добавьте в /etc/sysctl.d/99-tuning.conf
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
vm.swappiness = 10
vm.vfs_cache_pressure = 50

Примените настройки:

sudo sysctl -p /etc/sysctl.d/99-tuning.conf

2. Настройка лимитов ресурсов через ulimit

Для увеличения лимитов открытых файлов (важно для высоконагруженных серверов):

# В /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
nginx soft nofile 100000
nginx hard nofile 200000

Текущие лимиты проверяются командой ulimit -n.

3. Оптимизация подсистемы ввода-вывода

Используйте ionice для управления приоритетом ввода-вывода и tuned для профилей производительности:

# Установка tuned и выбор профиля
sudo dnf install tuned  # Для RHEL/CentOS/Fedora
sudo tuned-adm profile throughput-performance

Доступные профили: latency-performance, network-latency, virtual-host.

4. Настройка планировщика ввода-вывода (I/O Scheduler)

Выбор планировщика для SSD или HDD:

# Просмотр текущего планировщика
cat /sys/block/sda/queue/scheduler

# Временное изменение на deadline (для SSD)
echo deadline > /sys/block/sda/queue/scheduler

# Постоянная настройка через udev
# Создайте правило в /etc/udev/rules.d/60-ioscheduler.rules
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"

5. Управление энергосбережением CPU (CPU Frequency Scaling)

Для серверов отключайте энергосберегающие режимы:

# Установка постоянной максимальной частоты
sudo cpupower frequency-set -g performance

# Проверка текущей политики
cpupower frequency-info

6. Мониторинг и анализ перед тюнингом

Используйте инструменты для сбора метрик:

  • vmstat и iostat для общего анализа
  • perf для профилирования производительности
  • nicstat или nethogs для сетевого трафика

Пример сбора базовой статистики:

# Комплексный мониторинг загрузки системы
vmstat 1 10
iostat -xz 1

7. Автоматизация тюнинга с помощью Ansible

Для воспроизводимости настройки можно автоматизировать:

# tuning-playbook.yml
- name: Apply Linux performance tuning
  hosts: servers
  tasks:
    - name: Configure sysctl parameters
      sysctl:
        name: "{{ item.name }}"
        value: "{{ item.value }}"
        state: present
        reload: yes
      loop:
        - { name: 'net.core.somaxconn', value: '4096' }
        - { name: 'vm.swappiness', value: '10' }
    
    - name: Set CPU governor to performance
      lineinfile:
        path: /etc/default/cpupower
        regexp: '^GOVERNOR='
        line: 'GOVERNOR=performance'

Ключевые принципы тюнинга:

  1. Всегда измеряйте перед оптимизацией — используйте бенчмарки (sysbench, fio) и мониторинг.
  2. Изменяйте постепенно — вносите по одному изменению и проверяйте эффект.
  3. Документируйте изменения — ведите log всех модификаций.
  4. Учитывайте нагрузку — настройки для БД (высокий I/O) и веб-сервера (много сетевых соединений) отличаются.
  5. Тестируйте в staging-среде перед применением в production.

Распространённые ошибки:

  • Копирование tuning-параметров без понимания их влияния
  • Установка чрезмерно агрессивных значений (например, vm.swappiness=0)
  • Игнорирование аппаратных ограничений (нельзя «выжать» из HDD производительность SSD)

Настройка Linux — это итеративный процесс, требующий понимания архитектуры приложения и характеристик железа. Современные дистрибутивы часто имеют разумные настройки по умолчанию, поэтому тюнинг нужен только под специфические высоконагруженные задачи.

Как создать tuning в Linux? | PrepBro