2 min read

FreeBSD 15 на ARM64: Полный гид по оптимизации «под ключ»

FreeBSD 15 на ARM64: Полный гид по оптимизации «под ключ»

Когда вы летите на Boeing 737, вы доверяете системам, которые работают предсказуемо. Этот конфиг сделает ваш сервер таким же надежным. Мы отказываемся от ZFS в пользу UFS, чтобы оставить 95% оперативной памяти вашему приложению и торговым скриптам.

1. Файловая система (UFS)

Отредактируйте /etc/fstab. Мы отключаем запись времени доступа (noatime), что критично для долголетия NVMe в облаке.

Plaintext

# /etc/fstab
/dev/gpt/rootfs   /   ufs   rw,noatime,softdeps   1   1

2. Загрузчик: Ядро и Модули (/boot/loader.conf)

Эти настройки применяются до старта системы. Здесь мы «разгоняем» сеть и отключаем лишние проверки безопасности CPU для максимального FPS вашего кода.

Ini, TOML

# --- Интерфейс и загрузка ---
autoboot_delay="1"
boot_multicons="YES"

# --- Сетевой стек (BBR и Фильтры) ---
cc_bbr_load="YES"       # Алгоритм TCP BBR для плавной работы из Таиланда/Дубая
accf_data_load="YES"   # Фильтр данных для Caddy
accf_http_load="YES"   # Фильтр HTTP для Caddy

# --- Оптимизация CPU ARM (Ampere Altra) ---
# Отключаем патчи безопасности, замедляющие ARM (на свой страх и риск)
hw.spec_store_bypass_disable="0"
# Настройка очередей VirtIO под 2 ядра CAX11
hw.vtnet.mq_disable="0"
hw.vtnet.mq_max_cpus="2"

# --- Ресурс диска ---
vfs.read_max=128

3. Системный тюнинг (/etc/sysctl.conf)

Это «Dashboard» вашего сервера. Настраиваем TCP-стек на высокую пропускную способность и тюним планировщик CPU.

Ini, TOML

# --- TCP Stack & BBR ---
net.inet.tcp.cc.algorithm=bbr
net.inet.tcp.fastopen.server_enable=1
kern.ipc.maxsockbuf=16777216
net.inet.tcp.sendbuf_max=16777216
net.inet.tcp.recvbuf_max=16777216
net.inet.tcp.sendbuf_inc=65536
net.inet.tcp.recvbuf_inc=65536

# --- Оптимизация планировщика CPU ---
kern.sched.preempt_thresh=224
kern.sched.topology_spec_type=0
kern.hz=500  # Снижаем частоту таймера (меньше накладных расходов)

# --- Лимиты файлов (для Go и Caddy) ---
kern.maxfiles=200000
kern.maxfilesperproc=180000

# --- Сетевые прерывания (Direct Dispatch) ---
net.isr.dispatch=direct
net.isr.bindthreads=1

# --- Скрытность (Security) ---
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
kern.randompid=1

4. Контроль служб (/etc/rc.conf)

Выбрасываем «балласт» (Sendmail) и включаем режим максимальной производительности процессора.

Bash

# Сетевые настройки
hostname="pilot-cax11"
ifconfig_vtnet0="DHCP"
ifconfig_vtnet0_ipv6="inet6 accept_rtadv"

# Процессор: Режим High Performance
powerd_enable="YES"
powerd_flags="-a hiadaptive -b hiadaptive"
performance_cpu_freq="HIGH"

# Отключаем Sendmail (минус память и процессы)
sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

# Полезные сервисы
sshd_enable="YES"
ntpd_enable="YES"           # Важно для таймстампов сделок в Interactive Brokers
ntpd_sync_on_start="YES"
clear_tmp_enable="YES"
sshguard_enable="YES"       # Защита от брутфорса

# Ваш стек
caddy_enable="YES"

5. Лимиты процессов (/etc/login.conf)

Чтобы Go-рантайм не упирался в системные лимиты при обработке тысяч HTMX-запросов.

В секции default: измените:

Plaintext

default:\
    ...
    :openfiles=204800:\
    :maxproc=10000:\
    :stacksize=64M:\
    :memorylocked=unlimited:\
    ...

Затем выполните: cap_mkdb /etc/login.conf

6. Конфигурация Caddy (Caddyfile)

Финальный аккорд. Проксирование на Go-приложение с использованием современного сжатия Zstd.

Фрагмент кода

your-domain.com {
    # Сжатие Zstd идеально для ARM процессоров
    encode zstd gzip

    # Кэширование статики Tailwind
    handle_path /static/* {
        root * /usr/local/www/app/static
        file_server
        header Cache-Control "public, max-age=31536000"
    }

    # Реверс-прокси на ваш Go-бинарник
    handle {
        reverse_proxy localhost:8080
    }
}

Итог

После перезагрузки (reboot) вы получите систему, которая:

  1. Потребляет менее 200 MB ОЗУ на старте.
  2. Использует BBR для минимизации лагов сети.
  3. Максимально эффективно распределяет задачи между двумя ядрами Ampere Altra.

Теперь ваш сервер готов к любым задачам — от торговли на бирже до обслуживания высоконагруженного веб-интерфейса.