/
githubmirror
/
postgres
Обзор
Документация
Войти
/
githubmirror
/
postgres
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/backend/utils/misc/pg_rusage.c
73 строки
2 KB
Bruce Momjian
Update copyright for 2026
01 янв 2026, 21:24
01 янв 2026, 21:24
451c439
Код
Авторство
О чём код?
/*------------------------------------------------------------------------- * * pg_rusage.c * Resource usage measurement support routines. * * * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/misc/pg_rusage.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include <unistd.h> #include "utils/pg_rusage.h" /* * Initialize usage snapshot. */ void pg_rusage_init(PGRUsage *ru0) { getrusage(RUSAGE_SELF, &ru0->ru); gettimeofday(&ru0->tv, NULL); } /* * Compute elapsed time since ru0 usage snapshot, and format into * a displayable string. Result is in a static string, which is * tacky, but no one ever claimed that the Postgres backend is * threadable... */ const char * pg_rusage_show(const PGRUsage *ru0) { static char result[100]; PGRUsage ru1; pg_rusage_init(&ru1); if (ru1.tv.tv_usec < ru0->tv.tv_usec) { ru1.tv.tv_sec--; ru1.tv.tv_usec += 1000000; } if (ru1.ru.ru_stime.tv_usec < ru0->ru.ru_stime.tv_usec) { ru1.ru.ru_stime.tv_sec--; ru1.ru.ru_stime.tv_usec += 1000000; } if (ru1.ru.ru_utime.tv_usec < ru0->ru.ru_utime.tv_usec) { ru1.ru.ru_utime.tv_sec--; ru1.ru.ru_utime.tv_usec += 1000000; } snprintf(result, sizeof(result), _("CPU: user: %d.%02d s, system: %d.%02d s, elapsed: %d.%02d s"), (int) (ru1.ru.ru_utime.tv_sec - ru0->ru.ru_utime.tv_sec), (int) (ru1.ru.ru_utime.tv_usec - ru0->ru.ru_utime.tv_usec) / 10000, (int) (ru1.ru.ru_stime.tv_sec - ru0->ru.ru_stime.tv_sec), (int) (ru1.ru.ru_stime.tv_usec - ru0->ru.ru_stime.tv_usec) / 10000, (int) (ru1.tv.tv_sec - ru0->tv.tv_sec), (int) (ru1.tv.tv_usec - ru0->tv.tv_usec) / 10000); return result; }