Difference between revisions of "Файл состояния ej-contests"

From EjudgeWiki
 
(...)
 
Line 1: Line 1:
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Файл состояния ej-contests]]
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Файл состояния ej-contests]]
 +
 +
Поддерживается с версии [[Изменения в версии 3.10.1|3.10.1]].
 +
 +
Компонент [[ej-contests]] экспортирует некоторые показатели работы в
 +
файл <code>ej-contests-status</code>. Этот файл отображается в память
 +
процесса ej-contests, поэтому обновления этих показателей становятся
 +
доступными для чтения немедленно.
 +
 +
Файл размещается в следующем каталоге (в порядке приоритета):
 +
* если при конфигурации системы была задана опция <code>--enable-contests-status-dir</code>, то файл размещается непосредственно в этом каталоге, например
 +
<code>/var/lib/ejudge/status/ej-contests-status</code>.
 +
* если при конфигурации системы была задана опция <code>--enable-local-dir</code>, то файл размещается в подкаталоге <code>status</code>,
 +
например <code>/var/lib/ejudge/status/ej-contests-status</code>.
 +
* иначе файл находится в каталоге CONTESTS_HOME_DIR/var, например
 +
<code>/home/judges/var/ej-contests-status</code>.
 +
 +
Для чтения информации из файла <code>ej-contests-status</code> его можно
 +
также отобразить в память в режиме "только чтение" и
 +
обращаться непосредственно к полям структуры.
 +
 +
Файл перезаписывается с нуля при каждом рестарте ej-contests.
 +
 +
Файл имеет следующую структуру:
 +
 +
struct metrics_contest_data
 +
{
 +
    uint32_t size;
 +
    unsigned char pad0[12];
 +
    struct timeval start_time;
 +
    struct timeval update_time;
 +
    long long client_serial;
 +
    int loaded_contests;
 +
    int runs_submitted;
 +
    long long total_compile_time_ms;
 +
    long long total_testing_time_ms;
 +
};
 +
 +
* Поле <code>size</code> содержит размер структуры в байтах (<code>sizeof(struct metrics_contest_data)</code>). В следующих версиях структуры ее размер может увеличиться за счет добавления новых полей, но существующие поля сохранятся.
 +
* Поле <code>start_time</code> содержит время старта компонента ej-contests.
 +
* Поле <code>update_time</code> содержит время последнего обновления значения в структуре.
 +
* Поле <code>client_serial</code> содержит текущий номер внутреннего запроса, обрабатываемого ej-contests. При обращении к ej-contests по протоколу http(s) создаются два внутренних запроса, поэтому количество http(s) запросов к ej-contests с момента старта программы можно получить, поделив это значение на 2.
 +
* Поле <code>loaded_contests</code> содержит число турниров, полная информация о которых загружена в память ej-contests.
 +
* Поле <code>runs_submitted</code> содержит число посылок, присланных на проверку с момента запуска ej-contests.
 +
* Поле <code>total_compile_time_ms</code> содержит суммарное время, потраченное на компиляцию всех посылок (включая перетестирования) в миллисекундах.
 +
* Поле <code>total_testing_time_ms</code> содержит суммарное время, потраченное на тестирование всех посылок (включая перетестирования) в миллисекундах.

Latest revision as of 21:11, 31 January 2023

Навигация: Главная страница/Система ejudge/Использование/Файл состояния ej-contests

Поддерживается с версии 3.10.1.

Компонент ej-contests экспортирует некоторые показатели работы в файл ej-contests-status. Этот файл отображается в память процесса ej-contests, поэтому обновления этих показателей становятся доступными для чтения немедленно.

Файл размещается в следующем каталоге (в порядке приоритета):

  • если при конфигурации системы была задана опция --enable-contests-status-dir, то файл размещается непосредственно в этом каталоге, например

/var/lib/ejudge/status/ej-contests-status.

  • если при конфигурации системы была задана опция --enable-local-dir, то файл размещается в подкаталоге status,

например /var/lib/ejudge/status/ej-contests-status.

  • иначе файл находится в каталоге CONTESTS_HOME_DIR/var, например

/home/judges/var/ej-contests-status.

Для чтения информации из файла ej-contests-status его можно также отобразить в память в режиме "только чтение" и обращаться непосредственно к полям структуры.

Файл перезаписывается с нуля при каждом рестарте ej-contests.

Файл имеет следующую структуру:

struct metrics_contest_data
{
    uint32_t size;
    unsigned char pad0[12];
    struct timeval start_time;
    struct timeval update_time;
    long long client_serial;
    int loaded_contests;
    int runs_submitted;
    long long total_compile_time_ms;
    long long total_testing_time_ms;
};
  • Поле size содержит размер структуры в байтах (sizeof(struct metrics_contest_data)). В следующих версиях структуры ее размер может увеличиться за счет добавления новых полей, но существующие поля сохранятся.
  • Поле start_time содержит время старта компонента ej-contests.
  • Поле update_time содержит время последнего обновления значения в структуре.
  • Поле client_serial содержит текущий номер внутреннего запроса, обрабатываемого ej-contests. При обращении к ej-contests по протоколу http(s) создаются два внутренних запроса, поэтому количество http(s) запросов к ej-contests с момента старта программы можно получить, поделив это значение на 2.
  • Поле loaded_contests содержит число турниров, полная информация о которых загружена в память ej-contests.
  • Поле runs_submitted содержит число посылок, присланных на проверку с момента запуска ej-contests.
  • Поле total_compile_time_ms содержит суммарное время, потраченное на компиляцию всех посылок (включая перетестирования) в миллисекундах.
  • Поле total_testing_time_ms содержит суммарное время, потраченное на тестирование всех посылок (включая перетестирования) в миллисекундах.