File size: 6,613 Bytes
def1299
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
## Configuration Info [/config_info]
## Configuration Info [GET]
Configuration information gives you detailed information about configuration of Judge0.
This configuration can be changed through [judge0.conf](https://github.com/judge0/judge0/blob/master/judge0.conf)
file by admin who hosts Judge0 instance.

This configuration gives every admin a flexibility to configure Judge0 according to server abilities and needs. It also gives users
insight on some *default configuration values* which are used when their programs are run.

Each of these *configuration variables* have *default values* which we consider as recommended in case you are not sure should you change them.

We will refer to *default values* as values which Judge0 automatically assigns to each of these *configuration variables*,
if admin didn't set them. For example, default value of *configuration variable* `cpu_time_limit` is `2`.

|#    |Name|Type |Unit |Description|Default Value|
|:---:|:---|:---:|:---:|:----------|:------------|
|1|`enable_wait_result`|boolean||If enabled user can request to synchronously wait for submission result on submission create.|true|
|2|`enable_compiler_options`|boolean||If enabled user can set `compiler_options`.|true|
|3|`allowed_languages_for_compile_options`|list of strings||Languages for which setting compiler options is allowed.|Empty, i.e. for all languages it is allowed to set compiler options.|
|4|`enable_command_line_arguments`|boolean||If enabled user can set `command_line_arguments`.|true|
|5|`enable_submission_delete`|boolean||If enabled authorized user can [delete a submission](#submissions-submission-delete).|false|
|6|`max_queue_size`|integer||Maximum number of submissions that can wait in queue.|100|
|7|`cpu_time_limit`|float|second|Default runtime limit for every program (in seconds). Decimal numbers are allowed. Time in which the OS assigns the processor to different tasks is not counted.|2|
|8|`cpu_extra_time`|float|second|When a time limit is exceeded, wait for extra time, before killing the program. This has the advantage that the real execution time is reported, even though it slightly exceeds the limit.|0.5|
|9|`wall_time_limit`|float|second|Limit wall-clock time in seconds. Decimal numbers are allowed. This clock measures the time from the start of the program to its exit, for an external event. We recommend to use `cpu_time_limit` as the main limit, but set `wall_time_limit` to a much higher value as a precaution against sleeping programs.|5|
|10|`memory_limit`|integer|kilobyte|Limit address space of the program in kilobytes.|128000|
|11|`stack_limit`|integer|kilobyte|Limit process stack in kilobytes.|64000|
|12|`max_processes_and_or_threads`|integer||Maximum number of processes and/or threads program can create.|60|
|13|`enable_per_process_and_thread_time_limit`|boolean||If `true` then `cpu_time_limit` will be used as per process and thread.|false|
|14|`enable_per_process_and_thread_memory_limit`|boolean||If `true` then `memory_limit` will be used as per process and thread.|true|
|15|`max_file_size`|integer|kilobyte|Limit size of files created (or modified) by the program.|1024|
|16|`allow_enable_network`|boolean||If enabled user can set `enable_network`.|true|
|17|`enable_network`|boolean||If enabled program will have network access.|true|
|18|`number_of_runs`|integer||Run each program this many times and take average of time and memory.|1|

*Default configuration value* for each variable is given to you as response of this API call. For example, *default configuration value*
for variable `cpu_extra_time` might be `2`, and if admin didn't set this, then it is `0.5` (*default value*).
This means that admin set `cpu_extra_time` *configuration variable* to value `2` and we say it is now *default configuration value* for this
variable `cpu_extra_time`.

Every [submission](#submissions-submission) can change each of the configuration variables according to its needs. For example,
user might create submission which has `cpu_time_limit` of `5` seconds. For security reasons we need to limit values of each of these
configuration variables. For example, we don't want user to create a submission which has `cpu_time_limit` of `100000` seconds.

For this security reason we are introducing *limit configuration variables* for each *configuration variable*.

|#    |Name|Type |Unit |Description|Default Value|
|:---:|:---|:---:|:---:|:----------|:------------|
|1|`max_cpu_time_limit`|float|second|Maximum custom `cpu_time_limit`|15|
|2|`max_cpu_extra_time`|float|second|Maximum custom `cpu_extra_time`|2|
|3|`max_wall_time_limit`|float|second|Maximum custom `wall_time_limit`|20|
|4|`max_memory_limit`|integer|kilobyte|Maximum custom `memory_limit`|256000|
|5|`max_stack_limit`|integer|kilobyte|Maximum custom `stack_limit`|128000|
|6|`max_max_processes_and_or_threads`|integer||Maximum custom `max_processes_and_or_threads`|120|
|7|`allow_enable_per_process_and_thread_time_limit`|boolean||If `false` user won't be able to set `enable_per_process_and_thread_time_limit` to `true`|true|
|8|`allow_enable_per_process_and_thread_memory_limit`|boolean||If `false` user won't be able to set `enable_per_process_and_thread_memory_limit` to `true`|true|
|9|`max_max_file_size`|integer|kilobyte|Maximux custom `max_file_size`|4096|
|10|`max_number_of_runs`|integer||Maximum custom `number_of_runs`|20|

For example, `max_cpu_time_limit` with value `20` means that user cannot create new submission which has `cpu_time_limit` greater than `20`.

+ Response 200 (application/json)
    {
        "enable_wait_result": true,
        "enable_compiler_options": true,
        "allowed_languages_for_compile_options": [],
        "enable_command_line_arguments": true,
        "enable_submission_delete": false,
        "max_queue_size": 100,
        "cpu_time_limit": 2,
        "max_cpu_time_limit": 15,
        "cpu_extra_time": 0.5,
        "max_cpu_extra_time": 2,
        "wall_time_limit": 5,
        "max_wall_time_limit": 20,
        "memory_limit": 128000,
        "max_memory_limit": 256000,
        "stack_limit": 64000,
        "max_stack_limit": 128000,
        "max_processes_and_or_threads": 60,
        "max_max_processes_and_or_threads": 120,
        "enable_per_process_and_thread_time_limit": false,
        "allow_enable_per_process_and_thread_time_limit": true,
        "enable_per_process_and_thread_memory_limit": true,
        "allow_enable_per_process_and_thread_memory_limit": true,
        "max_file_size": 1024,
        "max_max_file_size": 4096,
        "number_of_runs": 1,
        "max_number_of_runs": 20
    }