Категорії
FreeBSD Solaris

Dtrace: некоторые примеры применения

Данные примеры работают не только на Solaris, но и на FreeBSD

Загрузка ЦПУ приложениями (можно использовать оба варианта)

dtrace -n 'syscall:::entry { @num[execname] = count(); }'
dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }'

Статистика системных вызовов (syscalls)

dtrace -n 'syscall:::entry { @num[probefunc] = count(); }'

Категорії
Solaris

Альтернатива history

В Solaris очень много разных инструментов, которые предназначены на все случаи жизни. Вот ещё один – lastcomm, команда которая хранит историю всех команд всех пользователей. По умолчанию логгирование отключено. При первом запуске получим:

#lastcomm
/var/adm/pacct: No such file or directory

Что бы включить логгирование команд, выполним

#/usr/lib/acct/turnacct on

После этого введём пару команд и посмотрим lastcomm

$ lastcomm
man skeletor pts/3 0.00 secs Tue May 8 20:19
less skeletor pts/3 0.00 secs Tue May 8 20:19
sendmail SF root __ 0.00 secs Tue May 8 20:21
sendmail F smmsp __ 0.00 secs Tue May 8 20:19
mv skeletor pts/3 0.00 secs Tue May 8 20:19

Категорії
Solaris

net0 has duplicate address; disabled

Наткнулся на очень странное поведение коллизии в сети. Если Solaris обнаруживает, что кто-то другой использует его же IP адрес – он просто отключает интерфейс. То ли баг, то ли фича – неясно. Поднять сетевой интерфейс можно так:

Solaris 10

#ifconfig net0 up

Solaris 11

#ipadm up-addr net0/v4

или так:

#ipadm refresh-addr net0/v4

Категорії
Solaris

Рост CPU usage на Solaris 11

При продолжительных нагрузках может наблюдаться симптом роста потребления ядром процессорной мощности. Как оказалось это баг, который обсуждали здесь и он решается отключением “засыпания”:

– налету меняется так:

#echo apic_timer_preferred_mode = 0x0 | mdb -kw

– для постояннки добавим в /etc/system

set apix:apic_timer_preferred_mode = 0x0

– для просмотра текущего состояния:

# echo apic_timer::print apic_timer_t | mdb -k
{
mode = 0
apic_timer_enable_ops = oneshot_timer_enable
apic_timer_disable_ops = oneshot_timer_disable
apic_timer_reprogram_ops = oneshot_timer_reprogram
}
# echo apic_timer_preferred_mode::print apic_timer_t |mdb -k
{
mode = 0
apic_timer_enable_ops = 0xffffc100
apic_timer_disable_ops = 0x1e12ee4000000000
apic_timer_reprogram_ops = 0xffffc100
}

Категорії
Solaris

Разбираемся с core/crash-файлами

При падении приложения оно создаёт core-файл, который можно проанализировать. За создание core файлов отвечает утилита coreadm. С её помощью можно указать, где будут лежать core-файлы, для каких типов создавать core-файлы и т.д.

Важно понимать, что core dump файлы системы и процессов отличаются, и их нужно анализировать по разному.

Категорії
FreeBSD Linux OpenBSD Solaris

Трассировка приложений

Linux

strace/SystemTap/ftrace/ktap/pspy

FreeBSD

truss/ktrace/dtrace

OpenBSD

ktrace/kdump

Solaris

truss/dtrace

==================================

Misc


https://klarasystems.com/articles/freebsd-vs-linux-tracing-and-troubleshooting

Категорії
FreeBSD Linux OpenBSD Solaris

Смотрим сетевой трафик в Realtime

Linux

$watch /sbin/ifconfig -s eth0

FreeBSD/OpenBSD

$netstat -w 1 -I em0

Solaris

$netstat -I net0 1
$dlstat -i 1 net0
#dladm show-link -s -i 1 net0

Здесь (http://www.brendangregg.com/Perf/network.html) неплохой подбор по утилитам замера трафика для Solaris

Категорії
FreeBSD Linux OpenBSD Solaris

Монтирование ISO-образов

Рассмотрим монтирование iso-образов в разных ОС

Linux

смонтировать

#mount -o loop -t iso9660 file.iso /mnt/test

размонтировать

#umount /mnt/test

Категорії
Solaris

sysctl в Solaris

sysctl в Solaris отсутствует. Аналог есть, но он не один. Иными словами параметры разнесены по разным категориям и соответственно управляются через разные утилиты. И так, приступим к небольшому обзору.

Тестовый стенд: Solaris 10/11

Категорії
Solaris

Shared Memory

Разделяемую память (англ. Shared memory) применяют для того, чтобы увеличить скорость прохождения данных между процессами. В обычной ситуации обмен информацией между процессами проходит через ядро. Техника разделяемой памяти позволяет осуществить обмен информацией не через ядро, а используя некоторую часть виртуального адресного пространства, куда помещаются и откуда считываются данные.
После создания разделяемого сегмента памяти любой из пользовательских процессов может подсоединить его к своему собственному виртуальному пространству и работать с ним, как с обычным сегментом памяти. Недостатком такого обмена информацией является отсутствие каких бы то ни было средств синхронизации, однако для преодоления этого недостатка можно использовать технику семафоров.

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP