Site Tools


atop

http://gostroy.org.ua/panser/utilites/analyz/proc/atop
http://gostroy.org.ua/panser/utilites/analyz/proc/atopsar.1

Пишем

Читаем

1

Запускаем из файла на 23:45

atop -r /var/log/My_atop -b 23:45

tmp

atop - анализ нагрузки
ОПИСАНИЕ

- интерактивный монитор, позволяющий отследить активность и уровень потребления различных ресурсов со степенью детализации до одного процесса.

самое лучшее средство для отслеживания узких мест, связанных с процессами, процессором, памятью и жесткими дисками, причем все в одном.Но само средство может вызвать массу проблем на сильно загруженных серверах, поскольку учет процессов идет непрерывно и сервис работает постоянно…

При запуске он включает в ядре механизм process accounting. Никогда не убивайте atop через kill -9, так как не будет отключен механизм process accounting и лог ф-л разрастеться до больших размеров

atop - это такой комбайн, который сочетает в себе возможности top, netstat, iostat, accounting и так далее. может записывать состояние системы в сжатый файл и позже оспроизводить их в console UI или используя sar подобный режим atopsar предоставлять кучу репортов.

FreeBSD
INSTALL

есть во FreeBSD

atop 1.26.b7 sysutils =3 
ASCII Monitor for system resources and process activity
Maintained by: samm@os2.kiev.ua 
Port Added: 02 Jul 2011 08:02:13
License: GPLv2

устанавливаем. порт есть лишь во FreeBSD9. но можно последнюю с svn

# cd /usr/ports/devel/subversion
# make install clean
# rehash

# mkdir /usr/src/tar/
# cd /usr/src/tar/

# svn checkout http://svn.berlios.de/svnroot/repos/atop-freebsd/trunk atop-freebsd
# cd atop-freebsd
# make -f Makefile.fbsd

# make install
# rehash
# atop -V

мое. послейстановка, поправляем

# vi /etc/fstab                                                                                                         
 linproc /compat/linux/proc linprocfs rw 0 0
# mkdir -p /compat/linux/proc
# mount /compat/linux/proc

# crontab -e
11      0       *       *       *        atop -aS -w /var/log/atop/atop_`date +%Y%m%d` 600
16      0       *       *       *        find  /var/log/atop/ -name 'atop_*' -mtime +28 -exec rm {} \

DAEMON

In the FreeBSD port init script is provided. To use atop in daemon mode do:

# echo 'atop_enable="YES"' >> /etc/rc.conf
##echo 'atop_interval=10' >> /etc/rc.conf
##echo 'atop_keepdays=30' >> /etc/rc.conf
# /usr/local/etc/rc.d/atop start

# crontab -e
   0 0 * * * /usr/local/etc/rc.d/atop rotate >/dev/null

FreeBSD specific features and notes
OPTIONS

    -U By default all kernel processes are filtered. System processes will be displayed in {name} format, like in BSD top.

COMMANDS

    d per-process disk report. disk activity is shown in blocks, like in bsd «top -mio».
    Added JID keyword to the per-process statistic to show Jail ID.

FEATURES

    FreeBSD kernel provides 5 memory related counters: Wired, Active, Inactive, Cache and Free. They are implemented in the FreeBSD atop instead of Linux counters (slabmem, cachedirty, etc.).
    no separate statistic for UDP on IPv6 as in Linux, everything is in the global protocol statistic. Also tcp rst send count is not very accurate because there is no dedicated counter for it.

BUGS

    Disk per process counters are exported in «blocks». Need to investigate if they are convertible to bytes or not.
    It is not possible to read BSD logs on Linux platform. Probably not possible to fix without linux version source changes.

ВОЗМОЖНОСТИ

    потребление ресурсов каждым процессом
    отслеживание (занесение в журнал) информации об уровне нагрузки на каждый ресурс
    подсветка наиболее критичных ресурсов цветами
    возможность просмотра информации только об активных процессах
    статистика суммарного потребления ресурсов по пользователям и по процессам

Некоторые возможности atop доступны для обычного ядра Linux, а некоторые, в частности, отслеживание дисковой активности, требуют обязательного наложения патча на ядро.
INSTALL
from PKG

 # yum -y remove atop
 # rpm -ihv http://www.atoptool.nl/download/atop-1.26-2.x86_64.rpm
 # rpm -ihv http://www.atoptool.nl/download/atop-1.26-2.i586.rpm
 
 # aptitude remove atop
 # wget --no-check-certificate https://launchpad.net/ubuntu/+source/atop/1.26-0ubuntu1/+build/2205997/+files/atop_1.26-0ubuntu1_amd64.deb
 # wget --no-check-certificate https://launchpad.net/ubuntu/+source/atop/1.26-0ubuntu1/+build/2205999/+files/atop_1.26-0ubuntu1_i386.deb
 # dpkg -i atop_1.26-*
 
 # wget http://www.atoptool.nl/download/atop-1.26.tar.gz
 

kernel PATCH

ATOP can be used without kernel-patches. In that case no information is available about the disk- and network-traffic on a per-process basis. This means a.o. that the selection 'd' (show disk-transfers per process) and 'n' (show network-transfers per process) can not be used, and the columns shown in the generic screen are different.
01patch-2.6.33_atopcnt

This patch takes care that statistical counters are added to the process-administration (task_struct) and that these counters are incremented per process.

The additional counters are shown via the process' /proc/PID/stat file as a second line of counters. The meaning of these counters: disk read transfers

    disk accumulated number of sectors read
    disk write transfers
    disk accumulated number of sectors written
    tcp send requests
    tcp accumulated number of bytes transmitted
    tcp receive requests
    tcp accumulated number of bytes received
    udp send requests
    udp accumulated number of bytes transmitted
    udp receive requests
    udp accumulated number of bytes received
    raw send requests (e.g. echo requests by ping)
    raw receive requests

for terminated process these additional counters are not shown, because the conventional layout of the process-accounting record has not been adapted.
01patch-2.6.33_atopacct

takes care that the additional statistical counters are added to the process-accounting record

this patch is an extension of the 01XXX_atopcnt patch! This patch can not be installed on its own.

When this patch is installed, ATOP automatically shows the additional counters for terminated processes as well. Since the pid of processes is also stored in the modified process-accounting record, matching this info with the formerly running process is less time-consuming compared to the conventional process-accounting record.

install

 patch -p1 < 01patch-2.6.33_atopcnt
 patch -p1 < 02patch-2.6.33_atopacct

или из пакетного менеджера

 aptitude install kernel-patch-atopcnt

Build a new kernel and reboot

When the patch …_atopacct has been installed, take care that the current process-accounting file (filled with the old record-layout till now) is removed.

 /usr/sbin/accton
 > /var/account/pacct
 /usr/sbin/accton /var/account/pacct
 
 
 

INTERACTIVE COMMANDS

маленькие б-вы - показать другую информацию по активным прцессам
большие б-вы - сортировать по другим значениям
g

вывод окна по cpu(default). общий вывод

    PID - process-id. ? -если процесс не является стандартной записю из accounting. с патчем поле будет выводиться коректно.
    RUID - действительное user-id под которым обробатываеться процесс
    EUID - действующее user-id под которым обробатываеться процесс
    THR - общее количество потоков для процесса
    SYSCPU - потребление CPU за последний интервал в р-ме system. kernel mode. обычно системные вызовы.
    USRCPU - потребление CPU за последний интервал в р-ме user
    VGROW - рост виртуальной памяти втечении последнего интервала
    RGROW - резидентный(реальный, занятый процессом ОП) рост памяти втечении последнего интервала. может быть отрицательным, если процесс отгружаеться из памяти в swap
    === cnt patch ===
    number of read- and write transfers on disk, and the number of received and transmitted network packets are shown for each process
    === kernel patch is not installed and the kernel supports per-process io statistics (>= 2.6.20) ===
    RDDSK - I/O необходимое на swapping не учитывается.
        с установленным патчем показывает кол обращений к физическому диску для считывания с него данных(минуя кеш)
        без установленного патча - количество данных считаные с диск(минуя кеш).
    WRDSK - I/O необходимое на swapping не учитывается.
        с установленным патчем показывает кол обращений к физическому диску для записи на него данных(минуя кеш)
        без установленного патча - количество данных отосланных на диск(минуя кеш).
    === kernel patch is not installed and the kernel does not support per-process io statistics ===
    username, number of threads in the thread group
    === ===
    ST - статус процесса.
        N в первой позиции говорит, что процесс был запущен во время последнего интервала.
        Вторая позиция показывает закончился ли процес за время последнего интервала:
        E - exit
        S - terminated by a signal
        C - terminated by a signal но остался core dump
    EXC - код выхода процесса.
        E - закончившиеся процессы.
        S or C - фатально убитые процессы.
    S - состояние процесса.
        R - в текущий момент обробатываються
        S - в пробуждаемом сне(ждут события)
        D - в непробуждаемом сне
        Z - зомби(ожидают синхронизации с родителями)
        T - остановленные(suspended or traced)
        W - swapping
        E - exit,закончившиеся.
    CPUNR - идентифицирует CPU который обрабатывает процесс
    CPU - процент занятости выбранного ресурса (default - cpu)
    CMD - имя процесса. если оно заключено в скобки < > - это означает что закончился во время последнего интервала.

m

по mem

    PID -
    MINFLT - количество страниц восстановленых после ошибок. если страница ненайдена в памяти, то она береться из swap(SWIN) , это и есть восстановление
    MAJFLT - количество крупных ошибок страниц памяти указанного процесса. если страница ненайдена в памяти, то она береться из swap(SWIN) , это и есть ошибка
    VSTEXT - размер кода в памяти
    VSIZE - размер всей памяти занятой процессом
    RSIZE - зарезервировано памяти процессом, пользователем (занято реально). = RSS per process
    VGROW -
    RGROW -
    RUID
    EUID
    MEM -
    CMD -

d

по dsk

    PID
    RDDSK
    WRDSK
    WRDSK_CANCEL | WCANCEL - не скинутые с кеша на диск данные, которые ужи были удалены. и их скидывать на диск не нужно.
    DSK
    CMD

n

по netw

    === when kernel patch cnt is installed ===

s

show scheduling-related process-info

    PID -
    TRUN - колич потоков в рабочем состаяние R
    TSLPI - колич потоков в состояние пробуждаемого сна S
    TSLPU - количество потоков в состоянии бесперебойного сна D
    POLI - политика разделения времени между процесами: нормальная с разделение времени(norm), циклическая реального времени(rr) и FIFO реального времени(fifo)
    NICE - коефициент мягкости NICE
    PRI - приоритет процессов от 0 (наивысший) до 139 (наинизший). 0 to 99 - для процессов реального времени, фиксирован. 100 to 139 - для обычных процессов, приоритет меняеться взависимости от последнего потребления процессора и уступчевости(nice)
    RTPR - приоритет реального времени по POSIX-стандарту. 0 - для обычных процессов norm. 1(lowest) - 99 (highest)- для процессов реального времени (rr или fifo)
    CPUNR - текущий процессор обробатывающий процесс
    ST - статус
    EXC - код выхода
    S - состояние
    CPU -
    CMD -

v

общии хар-ки процессов(пользователь, когда запущен)

    PID -
    PPID - pid процесса родителя.0, если процес родитель не поддержует механизм accaunting.
    RUID -
    RGID -
    EUID -
    EGID -
    FSUID - Filesystem user-id under which this process executes
    === в старых версиях ===
    USERNAME -
    GROUP -
    === - ===
    STDATE -
    STTIME -
    ENDATE - дата, когда процесс закончился
    ENTIME - время, когда процесс закончился
    ST -
    EXC -
    S -
    CPU -
    CMD -

c

полная строка запуска процесса

    PID
    CPU
    COMMAND-LINE

o

user-defined line of the process(file atoprc the keyword ownprocline)
u

показывает ресурсы по пользователям(работает a)

    NPROCS - кол. активных или мертвых процессов за последний интервал времени
    SYSCPU
    USRCPU
    VSIZE
    RSIZE
    RDDSK
    WRDSK
    RNET кол принятых сетевых пакетов
    SNET кол отосланных сетевых пакетов
    CPU
    USER

p

активнасть процессов по программам(работает a)

    NPROCS
    SYSCPU
    USRCPU
    VSIZE
    RSIZE
    RDDSK
    WRDSK
    RNET
    SNET
    CPU
    CMD

СОРТИРОВКА

предпоследняя строка(% по исследуемому ресурсу) меняется в зависимости от указанных опций:

    C сорт по CPU
    M по MEM
    D по DSK
    N по NET
    A automatically(по общей нагруженности). Сортировка по самому загруженому ресурсу втечении установленого интервала(может быть ACPU, AMEM, ADSK, ANET).

Miscellaneous interactive commands:

    h help
    V version number and date
    x вкл/выкл цвет
    z pause
    i interval timer (default: 10 seconds)
    t
    r сбросить все счетчики в zero и просматривать активность процессов зщаново
    U search string for specific user names as a regular expression
    P search string for specific process names as a regular expression
    a показ только активных/всех процессов. что бы узнать все количество ресурсов(память, диск,CPU, …), занимаемое комбинированным показателем(пользователь, имя процесса) обязательно смотрим его с включенным параметром a, то есть - для всех процессов, также и неактивных сейчас.
    ==============================
    f показ active/all system resources
    1 счетчик обычный/кол в сек
    l количество выводимых строк по статистику cpu,disk,interface. по умолчанию показываються все активные параметры за последний интервал времени
    k послать сигнал процессу
    ================
    ^F след стр процессов
    ^B пред стр процессов
    ^L перерисовать стр

OUTPUT DESCRIPTION

    PRC Process level totals.
        sys - процессорное время потребляемое процессами system mode-е
        user - процессорное время потребляемое процессами user mode-е
        #proc - кол процессов
        #trun - кол потоков запущенных в текущий момент
        #tslpi - кол пробуждаемых заснувших потоков
        #tslpu - кол НЕпробуждаемых заснувших потоков
        #zombie - кол зомби
        #exit - кол закончившихся процессов за интервал. ? - означает что аккаунтинг процессов не включен
    CPU - загрузка процессора
        sys - процессорное время, затраченое на процессы из kernel mode
        user - процессорное время, затраченое на процессы из user mode
        irq - процессорное время, затраченое на irq
        idle - время простоя процессора, пока нету процесов ждущих disk-I/O
        wait w - время простоя процессора, пока процесы ждут disk-I/O
        guest - кол процессора занимаемое гостевыми с-мами
        === # modprobe cpufreq_stats ===
        avgf - средняя частота процессора
        avgscal - средний процент масштабирования процессора
        === - ===
        curf - текущая частота процессора
        curs - текущий процент масштабирования процессора
        === - ===
        steal - процессорное время потраченное на другие вирт. машины запущенные на этом железе
        stl/cpu -
    cpu - хар-ки по каждому отдельному процессору(ядру). Показываются лишь активные ядра, неактивные не показуються.
    CPL - load average. количество потоков, которые доступны для выполнения процессором (то есть часть очередь задач) или, что ждут дискового ввода / вывода
        avg1 - averaged over 1 minutes.
        avg5 -
        avg15 -
        csw - число контекстных переключений
        intr - количество программных прерываний
        numcpu - кол процессоров
    MEM
        tot - кол физической памяти
        free - свободная
        cache - используется в качестве кэш страниц
        dirty - объем памяти в кэш страницы, которые должны быть записаны на диск
        buff - исп для метаданных файловой с-мы
        slab - используется ядром для выделения памяти malloc(). dynamically allocated kernel memory

page cache = cache + buff

    SWP
        tot -
        free -
        vmcom - защищенное вирт пространство для всех процессов. ядро лишь удостоверяеться в том что оно не превышает предела, если настроен строгий overcommit (vm.overcommit_memory равна 2).
        vmlim - максимальный предел пространства памяти(swap size plus 50% of memory size)
    PAG -
        scan - количество отсканированных страниц
        stall - число раз, когда ядро пытается вернуть страницы из-за срочной необходимости
        swin - количество страниц памяти считанных со swap
        swout - количество страниц памяти записанных в swap
    LVM/MDD/DSK
        busy -
        read - кол запросов на чтение
        write - кол запросов на запись
        KiB/r - number of KiBytes per read
        KiB/w - number of KiBytes per write
        MBr/s - number of MiBytes per second throughput for reads
        MBw/s - number of MiBytes per second throughput for writes
        avq - средняя глубина очереди запросов
        avio - среднее число мс на обработку запроса на поиск, задержку и передачу данных
    NET (TCP/IP)
        === transport - activity of the transport layer (TCP and UDP) ===
        tcpi - количество полученных сегментов TCP в том числе полученные по ошибке
        tcpo - количество переданных сегментов TCP исключая те, которые содержат только повторение октетов
        udpi - кол полученных UDP-датаграмм
        udpo - кол переданных UDP-датаграмм
        tcpao - number of active TCP opens
        tcppo - number of passive TCP opens
        tcprs - number of TCP output retransmissions(количество повторных передач TCP)
        === - ===
        tcpie - the number of TCP input errors
        tcpoe - the number of TCP output resets
        tcpor - the number of TCP output retransmissions
        udpnp - the number of UDP no ports
        udpie - the number of UDP input errors
        === network - IP layer ===
        ipi - кол пришедших IP-датаграм, включая ошибочные
        ipo -
        ipfrw - число полученных IP датаграмм, которые были направлены в другие интерфейсы
        deliv - число дейтаграмм IP которые были доставлены в местные протоколы более высокого уровня
        icmpi - the number of received ICMP datagrams
        icmpo - the number of transmitted ICMP datagrams
        === one line per active interface ===
        загрузка интерфейса - для half duplex определяется путем сравнения скорости интерфейса с числом битов переданных и полученных в секунду. для full duplex скорость интерф сравнивается с наивысшим числим переданных или полученных байт. — - если скорость не может быть определена.
        pcki - кол принятых пакетов
        pcko - кол переданных пакетов
        si - эффективное количество бит полученных в секунду, Mbps
        so - эффективное количество бит переданных за одну секунду, Mbps
        coll - the number of collisions
        mlti - the number of received multicast packets
        erri - the number of errors while receiving a packet
        erro - the number of errors while transmitting a packet
        drpi - the number of received packets dropped
        drpo - the number of transmitted packets dropped

OPTIONS

#Interactive usage:
atop [-g|-m|-d|-n|-u|-p|-s|-c|-v|-o] [-C|-M|-D|-N|-A] [-af1x]\
   [-L linelen] [-Plabel[,label]...]  [ interval [ samples ]]
#Writing and reading raw logfiles:
atop -w rawfile [-a] [-S] [ interval [ samples ]]
atop -r [ rawfile ] [-b hh:mm ] [-g|-m|-d|-n|-u|-p|-s|-c|-v|-o]\
      [-C|-M|-D|-N|-A] [-f1x] [-L linelen] [-Plabel[,label]...]

    interval - частота обновления данных
    samples - количество обновлений. после - выйти с программы.
    === ===
    -l ограничивает вывод системной статистики по ресурсам таким кол строк:maximum number of per-cpu lines is set to 0, the maximum number of disk lines to 5 and the maximum number of interface lines to 3
    -P [system-level statistics:«CPU»,»cpu» «CPL» «MEM»,»SWP»,»PAG»,»DSK» and «NET»] [process-level statistics:«PRG»,»PRC»,»PRM»,»PRD» and «PRN»] [ALL] - вывести статистику по одному или несколькому критерию

# atop -PCPU
# atop -PCPU,DSK
# atop -PCPU,DSK -r /var/log/atop/atop_20110516

VARIABLES

    $ATOPACCT - the name of a specific process accounting file can be specified (accounting should have been activated on beforehand). When this environment variable is present but its contents is empty, process accounting will not be used at all.

RAW DATA STORAGE

    имя ф-ла:
        - за сегодня
        y - за вчера
        yy - за позавчера
        yyyy - за 4 дня назад

atop -r y #за вчера читать статистику

    -w сохранить статистику в ф-л бинарного лога
    -r читать статистику с ф-ла лога
    -b - begin time. вставляет в ф-л лога отметки времени HH:MM, по которым потом лог можно исследовать.
    -e - end time.
    -a - сохранение в лог всех процессов, в том числе и неактивных
    -S - закончить сбор статистики принудительно в полночь
    -L - длина строки вывода

В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал.

 /etc/init.d/atop start

Потом по этому журналу atop'ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.

    t +interval (1o min)
    T -interval (10 min)
    b - перейти на просмотр статистики на определеное время
    r - начать просмотр ф-ла заново

   atop -r  /var/log/atop/atop_20100523   # просмотреть

С пакетом идет скрипт, который запускает atop каждый день в 00:00 с interv=10min и удаляет старые логи за 4 недели назад

  0 0 * * * root /etc/atop/atop.daily 

EXAMPLES

 atop 5
 atop -M 60 30 > /log/atop.mem
 atop -w /tmp/atop.raw 10 60 #Каждые десять секунд записывать информацию в файл, всего 60 раз
 atop -r /tmp/atop.raw #Прочитать содержимое файла в интерактивном режиме
 atop -r yy #logfile of the day before yesterday
 atop -PCPU,DSK -r /tmp/atop.raw
 atop -r 20100107 -b 14:00
 

FILES

    /etc/atoprc
    ~/.atoprc

flags 1Aaf
maxlinecpu    4
maxlinedisk   10
maxlineintf   5
#atopsarflags  CMH

    /var/log/atop/atop_YYYYMMDD - журнал лога работы демона atop
    /tmp/atop.d/atop.acct - kernel writes the accounting records if the standard accounting to the file /var/log/pacct or /var/account/pacct is not used

atopsar

- вывод статистики atop уровня с-мы. из ф-ла лога atop/

    atopsar - текущая статистика
    atopsar -m -r /var/log/atop/atop_20100523 -b 10:00 -e 14:30 статистика в определенный период
    atopsar -A -r /var/log/atop/atop_20100523 - стат по каждому процессу
    atopsar -t 60 10 - стат TCP
    atopsar -c 60 5 - eport is generated about current CPU utilization of the system during 5 minutes (five times with an interval of sixty seconds)

ССЫЛКИ
You could leave a comment if you were logged in.
atop.txt · Last modified: 2012/03/11 07:22 (external edit)

Page Tools