Возможно вы искали: 'Magic Artist Cartoon M...'

May 15 2025 17:57:50
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » [FreeBSD] Контроль загрузки процессора (cpu sysctl bsd)

[FreeBSD] Контроль загрузки процессора (cpu sysctl bsd)

Ключевые слова: cpu, sysctl, bsd, (найти похожие документы)

- BEST_PEOPLE (2:5077/15.22) ---------------------- BEST_PEOPLE (RU.UNIX.BSD) -
From : Valentin Nechayev 2:5020/400 24 Jan 01 16:52:34
Subj : [FreeBSD] Контроль загрузки процессора
-------------------------------------------------------------------------------
* Forwarded from area 'RU.UNIX.BSD'

From: netch@carrier.kiev.ua (Valentin Nechayev)

>> >Существует ли утилитка типа top или vmstat которая бы отслеживала
>> >загрузку процессора и памяти, но данные выводила бы не на экран,
>> >а в какой-нибудь файл?

Для начала - `sysctl -a | less' и внимательно рассмотреть.
Hе менее половины данных там будет.

AI> uptime показывает усредненную цифру, непонятно как вычисляющуюся и что,
AI> собственно говоря, показывающую.

Тебе неизвестно? В такой формулировке - согласен.;))
uptime показывает среднее за: 1, 5, 15 минут соответственно - там три числа -
количество процессов готовых к выполнению, то есть не находящихся в
какой-нибудь спячке. Если ты будешь снимать раз в минуту - вполне достаточно.

AI> Интервал, ну, скажем, 1 минута. Или 5. Как пожелаю.
AI> Записывать хотя бы idle для процессора и сумму Inact и Free для памяти.
AI> Желательно, конечно, чтбы это были не мгновенные снимки состояния
AI> системы,
AI> а средние цифры за период между записями в файл.

Idlt для процессора считается следующим образом. Из kvm получается количество
тиков statclock'а, в которых процесс был в каждом из пяти состояний.
В ядре есть инкрементальные счетчики этих тиков-при-состоянии.
Сняв в два разных момента значения этих счетчиков и разделив разность значений
счетчика idle на сумму по всем значениям разности этих значений, получаешь
долю процессора в idle, с учетом погрешности самого метода измерения
"вспышками statclock'а". Сколько у тебя времени проходит между снимками -
твое дело, но предел - 2**22 секунд (~2 месяца) для процессора.

Вот программка, снимающая значения счетчиков типов занятости процессора
и случившихся прерываний (частично передрана из systat/vmstat.c):

=== cut ===
#include <sys/param.h>
#include <sys/dkstat.h>
#include <sys/time.h>
#include <fcntl.h>
#include <err.h>
#include <kvm.h>
#include <time.h>
#include <syslog.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define NVAL(indx) namelist[(indx)].n_value
#define NPTR(indx) (void *)NVAL((indx))
#define NREAD(indx, buf, len) kvm_ckread(NPTR((indx)), (buf), (len))

static void rdtsc( unsigned long*, unsigned long* );

static struct nlist namelist[] = {
#define N_CPTIME 0
{ "_cp_time" },
#define N_INTRCNT 1
{ "_intrcnt" },
#define N_EINTRCNT 2
{ "_eintrcnt" },
#define N_INTRNAMES 3
{ "_intrnames" },
#define N_EINTRNAMES 4
{ "_eintrnames" },
{ "" }
};

int
main( void )
{
kvm_t *kd;
char errbuf[80];
long p_time_cnts[CPUSTATES];
unsigned long tsc_edx, tsc_eax;
struct timeval tvnow;
int i, nintr;
static const char* p_time_names[] = {
"t_sys", "t_intr", "t_user", "t_nice", "t_idle"
};
long* intrcnts;
char** intrnames;
char* intrnamebuf;
char* cp;
char obuf[1000];
char* opos;
char* olim;

olim = obuf + sizeof obuf;
opos = obuf;
gettimeofday( &tvnow, NULL );
rdtsc( &tsc_edx, &tsc_eax );
snprintf( opos, olim-opos, "time=%lu.%ld tsc=%lu:%lu",
tvnow.tv_sec, tvnow.tv_usec, tsc_edx, tsc_eax );
opos += strlen( opos );
kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, errbuf);
if( kd == NULL ) {
errx(1,"%s", errbuf);
}
if( kvm_nlist( kd, namelist ) != 0 )
err( 1, "kvm_nlist() failed" );
if( !namelist[0].n_type )
errx( 1, "no namelist after kvm_nlist()" );
if( kvm_read( kd, namelist[N_CPTIME].n_value, p_time_cnts,
sizeof( p_time_cnts ) ) != sizeof( p_time_cnts ) )
errx( 1, "kvm_read() failed" );
for( i = 0; i < CPUSTATES; i++ ) {
snprintf( opos, olim-opos, " p.%s=%ld",
p_time_names[i], p_time_cnts[i] );
opos += strlen( opos );
}
nintr = ( namelist[N_EINTRCNT].n_value - namelist[N_INTRCNT].n_value )
/ sizeof(long);
intrcnts = (long*) calloc(nintr, sizeof(long));
intrnames = (char**) calloc(nintr, sizeof(long));
intrnamebuf = (char*) malloc(
namelist[N_EINTRNAMES].n_value - namelist[N_INTRNAMES].n_value );
if( !intrcnts || !intrnames || !intrnamebuf )
errx( 1, "no memory" );
if( kvm_read( kd, namelist[N_INTRNAMES].n_value, intrnamebuf,
namelist[N_EINTRNAMES].n_value - namelist[N_INTRNAMES].n_value )
== 0 )
errx( 1, "kvm_read(intrnamebuf)" );
for( cp = intrnamebuf, i = 0; i < nintr; i++ ) {
char* p1;
intrnames[i] = p1 = cp;
while( p1 && *p1 ) {
if( *p1 == ' ' )
*p1 = '_';
p1++;
}
cp += strlen(cp) + 1;
}
if( kvm_read( kd, namelist[N_INTRCNT].n_value, intrcnts,
nintr*sizeof(long) ) != nintr*sizeof(long) )
errx( 1, "kvm_read(intrcnts)" );
for( i = 0; i < nintr; i++ ) {
if( !intrnames[i] || !intrnames[i][0] )
continue;
snprintf( opos, olim-opos,
" i.%s=%ld", intrnames[i], intrcnts[i] );
opos += strlen( opos );
}
#if 0
printf( "%sn", obuf );
#else
openlog( "syscounters", LOG_PID, LOG_DAEMON );
syslog( LOG_NOTICE, "%s", obuf );
#endif
return 0;
}

static void
rdtsc( unsigned long* tsc_edx, unsigned long* tsc_eax )
{
asm( "rdtsc" : "=d"(*tsc_edx), "=a"(*tsc_eax) );
}
=== end cut ===


/netch
--- ifmail v.2.15dev5
* Origin: Lucky Netch Incorporated (2:5020/400)
1141 Прочтений •  [[FreeBSD] Контроль загрузки процессора (cpu sysctl bsd)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• [FreeBSD] Контроль загрузки процесс... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка