dev #10
19
joj3_config_generator/models/common.py
Normal file
19
joj3_config_generator/models/common.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from typing import Union
|
||||
|
||||
import humanfriendly
|
||||
|
||||
|
||||
class Memory(int):
|
||||
jon-lee marked this conversation as resolved
Outdated
|
||||
def __new__(cls, value: Union[str, int]) -> "Memory":
|
||||
if isinstance(value, str):
|
||||
parsed = humanfriendly.parse_size(value, binary=True)
|
||||
return super().__new__(cls, parsed)
|
||||
return super().__new__(cls, value)
|
||||
|
||||
|
||||
class Time(int):
|
||||
def __new__(cls, value: Union[str, int]) -> "Time":
|
||||
if isinstance(value, str):
|
||||
parsed = humanfriendly.parse_timespan(value) * 1_000_000_000 # ns
|
||||
return super().__new__(cls, round(parsed))
|
||||
return super().__new__(cls, value)
|
5
joj3_config_generator/models/const.py
Normal file
5
joj3_config_generator/models/const.py
Normal file
|
@ -0,0 +1,5 @@
|
|||
from joj3_config_generator.models.common import Memory, Time
|
||||
|
||||
DEFAULT_CPU_LIMIT = Time("1s")
|
||||
DEFAULT_MEMORY_LIMIT = Memory("128m")
|
||||
DEFAULT_FILE_LIMIT = Memory("32m")
|
|
@ -1,8 +1,13 @@
|
|||
from typing import Any, Dict, List, Optional, Union
|
||||
|
||||
import humanfriendly
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from joj3_config_generator.models.const import (
|
||||
DEFAULT_CPU_LIMIT,
|
||||
DEFAULT_FILE_LIMIT,
|
||||
DEFAULT_MEMORY_LIMIT,
|
||||
)
|
||||
|
||||
|
||||
class LocalFile(BaseModel):
|
||||
src: str
|
||||
|
@ -18,7 +23,7 @@ class PreparedFile(BaseModel):
|
|||
|
||||
class Collector(BaseModel):
|
||||
jon-lee marked this conversation as resolved
Outdated
张泊明518370910136
commented
default value too large, should be 1s 128MB default value too large, should be 1s 128MB
李衍志523370910113
commented
will fix later, we need to hold some test I reckon? will fix later, we need to hold some test I reckon?
张泊明518370910136
commented
no no
李衍志523370910113
commented
@bomingzh fixed @bomingzh fixed
|
||||
name: str
|
||||
max: int
|
||||
max: int = DEFAULT_FILE_LIMIT
|
||||
pipe: bool = True
|
||||
|
||||
|
||||
|
@ -38,17 +43,14 @@ InputFile = Union[LocalFile | MemoryFile | PreparedFile | Symlink]
|
|||
|
||||
|
||||
class Cmd(BaseModel):
|
||||
args: Optional[List[str]] = None
|
||||
args: List[str] = []
|
||||
env: List[str] = []
|
||||
stdin: Optional[Union[InputFile | StreamIn]] = None
|
||||
stdout: Optional[Union[Collector | StreamOut]] = None
|
||||
stderr: Optional[Union[Collector | StreamOut]] = None
|
||||
cpu_limit: int = Field(1_000_000_000, serialization_alias="cpuLimit")
|
||||
real_cpu_limit: int = Field(1_000_000_000, serialization_alias="realCpuLimit")
|
||||
clock_limit: int = Field(2 * 1_000_000_000, serialization_alias="clockLimit")
|
||||
memory_limit: int = Field(
|
||||
humanfriendly.parse_size("128m"), serialization_alias="memoryLimit"
|
||||
)
|
||||
stdin: Union[InputFile | StreamIn] = MemoryFile(content="")
|
||||
stdout: Union[Collector | StreamOut] = Collector(name="stdout")
|
||||
stderr: Union[Collector | StreamOut] = Collector(name="stderr")
|
||||
cpu_limit: int = Field(DEFAULT_CPU_LIMIT, serialization_alias="cpuLimit")
|
||||
clock_limit: int = Field(2 * DEFAULT_CPU_LIMIT, serialization_alias="clockLimit")
|
||||
memory_limit: int = Field(DEFAULT_MEMORY_LIMIT, serialization_alias="memoryLimit")
|
||||
stack_limit: int = Field(0, serialization_alias="stackLimit")
|
||||
proc_limit: int = Field(50, serialization_alias="procLimit")
|
||||
cpu_rate_limit: int = Field(0, serialization_alias="cpuRateLimit")
|
||||
|
@ -74,15 +76,10 @@ class OptionalCmd(BaseModel):
|
|||
stdout: Optional[Union[Collector | StreamOut]] = None
|
||||
stderr: Optional[Union[Collector | StreamOut]] = None
|
||||
cpu_limit: Optional[int] = Field(None, serialization_alias="cpuLimit")
|
||||
real_cpu_limit: Optional[int] = Field(None, serialization_alias="realCpuLimit")
|
||||
clock_limit: Optional[int] = Field(
|
||||
2 * 1_000_000_000, serialization_alias="clockLimit"
|
||||
)
|
||||
memory_limit: Optional[int] = Field(
|
||||
humanfriendly.parse_size("128m"), serialization_alias="memoryLimit"
|
||||
)
|
||||
clock_limit: Optional[int] = Field(None, serialization_alias="clockLimit")
|
||||
memory_limit: Optional[int] = Field(None, serialization_alias="memoryLimit")
|
||||
stack_limit: Optional[int] = Field(None, serialization_alias="stackLimit")
|
||||
proc_limit: Optional[int] = Field(50, serialization_alias="procLimit")
|
||||
proc_limit: Optional[int] = Field(None, serialization_alias="procLimit")
|
||||
cpu_rate_limit: Optional[int] = Field(None, serialization_alias="cpuRateLimit")
|
||||
cpu_set_limit: Optional[str] = Field(None, serialization_alias="cpuSetLimit")
|
||||
copy_in: Optional[Dict[str, InputFile]] = Field(None, serialization_alias="copyIn")
|
||||
|
@ -90,9 +87,7 @@ class OptionalCmd(BaseModel):
|
|||
None, serialization_alias="copyInCached"
|
||||
)
|
||||
copy_in_dir: Optional[str] = Field(None, serialization_alias="copyInDir")
|
||||
copy_out: Optional[List[str]] = Field(
|
||||
["stdout", "stderr"], serialization_alias="copyOut"
|
||||
)
|
||||
copy_out: Optional[List[str]] = Field(None, serialization_alias="copyOut")
|
||||
copy_out_cached: Optional[List[str]] = Field(
|
||||
None, serialization_alias="copyOutCached"
|
||||
)
|
||||
|
|
|
@ -2,9 +2,14 @@ from datetime import datetime
|
|||
from pathlib import Path
|
||||
from typing import Any, Dict, List, Optional, Type
|
||||
|
||||
import humanfriendly
|
||||
from pydantic import BaseModel, Field, model_validator
|
||||
|
||||
from joj3_config_generator.models.const import (
|
||||
DEFAULT_CPU_LIMIT,
|
||||
DEFAULT_FILE_LIMIT,
|
||||
DEFAULT_MEMORY_LIMIT,
|
||||
)
|
||||
|
||||
|
||||
class ParserResultDetail(BaseModel):
|
||||
time: Optional[bool] = True # Display run time
|
||||
|
@ -31,8 +36,8 @@ class ParserDummy(BaseModel):
|
|||
|
||||
|
||||
class ParserKeyword(BaseModel):
|
||||
keyword: Optional[list[str]] = []
|
||||
weight: Optional[list[int]] = []
|
||||
keyword: Optional[List[str]] = []
|
||||
weight: Optional[List[int]] = []
|
||||
|
||||
|
||||
class Outputs(BaseModel):
|
||||
|
@ -47,27 +52,27 @@ class ParserDiff(BaseModel):
|
|||
|
||||
|
||||
class Files(BaseModel):
|
||||
import_: Optional[list[str]] = Field([], alias="import")
|
||||
export: Optional[list[str]] = []
|
||||
import_: Optional[List[str]] = Field([], alias="import")
|
||||
export: Optional[List[str]] = []
|
||||
|
||||
|
||||
class Limit(BaseModel):
|
||||
mem: int = humanfriendly.parse_size("128M")
|
||||
cpu: int = 1_000_000_000
|
||||
stderr: int = humanfriendly.parse_size("128M")
|
||||
stdout: int = humanfriendly.parse_size("128M")
|
||||
mem: int = DEFAULT_MEMORY_LIMIT
|
||||
cpu: int = DEFAULT_CPU_LIMIT
|
||||
stderr: int = DEFAULT_FILE_LIMIT
|
||||
stdout: int = DEFAULT_FILE_LIMIT
|
||||
|
||||
|
||||
class Stage(BaseModel):
|
||||
name: Optional[str] = None # Stage name
|
||||
env: Optional[list[str]] = None
|
||||
env: Optional[List[str]] = None
|
||||
command: Optional[str] = None # Command to run
|
||||
files: Optional[Files] = None
|
||||
in_: Optional[str] = Field(None, alias="in")
|
||||
out_: Optional[str] = Field(None, alias="out")
|
||||
score: Optional[int] = 0
|
||||
parsers: Optional[list[str]] = [] # list of parsers
|
||||
limit: Optional[Limit] = Limit()
|
||||
parsers: Optional[List[str]] = [] # list of parsers
|
||||
limit: Limit = Limit()
|
||||
dummy: Optional[ParserDummy] = ParserDummy()
|
||||
result_status: Optional[ParserDummy] = Field(ParserDummy(), alias="result-status")
|
||||
keyword: Optional[ParserKeyword] = ParserKeyword()
|
||||
|
@ -78,7 +83,7 @@ class Stage(BaseModel):
|
|||
ParserResultDetail(), alias="result-detail"
|
||||
)
|
||||
file: Optional[ParserFile] = ParserFile()
|
||||
jon-lee marked this conversation as resolved
Outdated
张泊明518370910136
commented
deprecated deprecated
李衍志523370910113
commented
@bomingzh any suggestions on the structure? @bomingzh any suggestions on the structure?
张泊明518370910136
commented
```
PydanticDeprecatedSince20: Support for class-based `config` is deprecated, use ConfigDict instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.9/migration/
```
李衍志523370910113
commented
fixed with fixed with `model_config`
张泊明518370910136
commented
str here need to be a str here need to be a `StrEnum` now.
李衍志523370910113
commented
But I guess we don't know the set of case in advance, making it dynamic But I guess we don't know the set of case in advance, making it dynamic `StrEnum` is meaningless
张泊明518370910136
commented
line changed, the comment is for line changed, the comment is for `parsers`
|
||||
skip: Optional[list[str]] = []
|
||||
skip: Optional[List[str]] = []
|
||||
|
||||
jon-lee marked this conversation as resolved
Outdated
李衍志523370910113
commented
this should be the this should be the `StrEnum`
张泊明518370910136
commented
yes yes
李衍志523370910113
commented
It is supported now. It is supported now.
|
||||
# cases related
|
||||
cases: Optional[Dict[str, "Stage"]] = None
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
import humanfriendly
|
||||
from pytimeparse.timeparse import timeparse
|
||||
|
||||
from joj3_config_generator.models import joj1, task
|
||||
from joj3_config_generator.models.common import Memory, Time
|
||||
from joj3_config_generator.models.const import DEFAULT_CPU_LIMIT, DEFAULT_MEMORY_LIMIT
|
||||
jon-lee marked this conversation as resolved
Outdated
张泊明518370910136
commented
is it added to pyproject.toml? is it added to pyproject.toml?
李衍志523370910113
commented
now added now added
|
||||
|
||||
|
||||
def get_joj1_run_stage(joj1_config: joj1.Config) -> task.Stage:
|
||||
default_cpu = timeparse("1s")
|
||||
default_mem = humanfriendly.parse_size("32m")
|
||||
cases_conf = []
|
||||
for i, case in enumerate(joj1_config.cases):
|
||||
jon-lee marked this conversation as resolved
Outdated
张泊明518370910136
commented
just use just use `humanfriendly.parse_timespan`
李衍志523370910113
commented
seems outdated, mark as resolved. seems outdated, mark as resolved.
|
||||
cases_conf.append(
|
||||
|
@ -14,12 +11,8 @@ def get_joj1_run_stage(joj1_config: joj1.Config) -> task.Stage:
|
|||
score=case.score,
|
||||
command=case.execute_args if case.execute_args else None,
|
||||
limit=task.Limit(
|
||||
cpu=timeparse(case.time) if case.time else default_cpu,
|
||||
mem=(
|
||||
humanfriendly.parse_size(case.memory)
|
||||
if case.memory
|
||||
else default_mem
|
||||
),
|
||||
cpu=Time(case.time) if case.time else DEFAULT_CPU_LIMIT,
|
||||
mem=(Memory(case.memory) if case.memory else DEFAULT_MEMORY_LIMIT),
|
||||
),
|
||||
)
|
||||
)
|
||||
|
@ -32,14 +25,14 @@ def get_joj1_run_stage(joj1_config: joj1.Config) -> task.Stage:
|
|||
score=100,
|
||||
limit=task.Limit(
|
||||
cpu=(
|
||||
timeparse(joj1_config.cases[0].time)
|
||||
Time(joj1_config.cases[0].time)
|
||||
if joj1_config.cases[0].time is not None
|
||||
else default_cpu
|
||||
else DEFAULT_CPU_LIMIT
|
||||
),
|
||||
mem=(
|
||||
humanfriendly.parse_size(joj1_config.cases[0].memory)
|
||||
Memory(joj1_config.cases[0].memory)
|
||||
if joj1_config.cases[0].memory is not None
|
||||
else default_mem
|
||||
else DEFAULT_MEMORY_LIMIT
|
||||
),
|
||||
),
|
||||
cases={f"case{i}": cases_conf[i] for i, _ in enumerate(cases_conf)},
|
||||
|
|
|
@ -65,52 +65,14 @@ def get_executor_with_config(
|
|||
# are there any corner cases
|
||||
for file in copy_in_files
|
||||
},
|
||||
stdin=(
|
||||
result.MemoryFile(content="")
|
||||
if (
|
||||
(task_stage.parsers is not None)
|
||||
and ("diff" not in task_stage.parsers)
|
||||
)
|
||||
else None
|
||||
),
|
||||
copy_out=copy_out_files,
|
||||
copy_in_cached={file: file for file in cached},
|
||||
copy_out_cached=file_export if file_export is not None else [],
|
||||
cpu_limit=(
|
||||
task_stage.limit.cpu * 1_000_000_000
|
||||
if task_stage.limit is not None and task_stage.limit.cpu is not None
|
||||
else 80 * 1_000_000_000
|
||||
),
|
||||
clock_limit=(
|
||||
2 * task_stage.limit.cpu * 1_000_000_000
|
||||
if task_stage.limit is not None and task_stage.limit.cpu is not None
|
||||
else 80 * 1_000_000_000
|
||||
),
|
||||
memory_limit=(
|
||||
task_stage.limit.mem * 1_024 * 1_024
|
||||
if task_stage.limit is not None and task_stage.limit.mem is not None
|
||||
else 128 * 1_024 * 1_024
|
||||
),
|
||||
stderr=result.Collector(
|
||||
name="stderr",
|
||||
max=(
|
||||
task_stage.limit.stderr * 1_000_000_000
|
||||
if task_stage.limit is not None
|
||||
and task_stage.limit.stderr is not None
|
||||
else 128 * 1_024 * 1_024
|
||||
),
|
||||
pipe=True,
|
||||
),
|
||||
stdout=result.Collector(
|
||||
name="stdout",
|
||||
max=(
|
||||
task_stage.limit.stdout * 1_000_000_000
|
||||
if task_stage.limit is not None
|
||||
and task_stage.limit.stdout is not None
|
||||
else 128 * 1_024 * 1_024
|
||||
),
|
||||
pipe=True,
|
||||
),
|
||||
copy_out_cached=file_export or [],
|
||||
cpu_limit=task_stage.limit.cpu,
|
||||
clock_limit=2 * task_stage.limit.cpu,
|
||||
memory_limit=task_stage.limit.mem,
|
||||
stderr=result.Collector(name="stderr"),
|
||||
stdout=result.Collector(name="stdout"),
|
||||
),
|
||||
jon-lee marked this conversation as resolved
Outdated
张泊明518370910136
commented
do not use do not use `getattr`, visit the field explictly
李衍志523370910113
commented
resolved. resolved.
|
||||
cases=[],
|
||||
)
|
||||
|
|
|
@ -13,7 +13,6 @@ dependencies = [
|
|||
"inquirer>=3.4.0",
|
||||
"rtoml>=0.11.0",
|
||||
"humanfriendly>=10.0",
|
||||
"pytimeparse>=1.1.8",
|
||||
]
|
||||
requires-python = ">=3.9"
|
||||
authors = [{ name = "JOJ3-dev", email = "joj3@focs.ji.sjtu.edu.cn" }]
|
||||
|
|
|
@ -17,11 +17,24 @@
|
|||
"name": "local",
|
||||
"with": {
|
||||
"default": {
|
||||
"args": [],
|
||||
"env": [],
|
||||
"stdin": {
|
||||
"content": ""
|
||||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 128000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
@ -51,13 +64,6 @@
|
|||
"-meta=Changelog.md",
|
||||
"-checkFileSumList=a5b63323a692d3d8b952442969649b4f823d58dae26429494f613df160710dfc,b1bbad25b830db0a77b15a033f9ca1b7ab44c1d2d05056412bd3e4421645f0bf,f6740081487ca34963a005209e2e9adfdf6f3561719af082d40fe80145e0cceb,bbeca1491c2f8364821a328a6677c0c5d59ccd60250abac3cec0887eeb9bde3e",
|
||||
"-checkFileNameList=.gitignore,.gitattributes,.gitea/workflows/push.yaml,.gitea/workflows/release.yaml"
|
||||
],
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 128000000,
|
||||
"procLimit": 50,
|
||||
"copyOut": [
|
||||
"stdout",
|
||||
"stderr"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -72,13 +78,6 @@
|
|||
],
|
||||
"env": [
|
||||
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
|
||||
],
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 128000000,
|
||||
"procLimit": 50,
|
||||
"copyOut": [
|
||||
"stdout",
|
||||
"stderr"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
@ -115,18 +114,17 @@
|
|||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 134217728000000,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
@ -203,18 +201,17 @@
|
|||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 134217728000000,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
@ -304,18 +301,17 @@
|
|||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 65000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 134217728000000,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
@ -431,18 +427,17 @@
|
|||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 65000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 134217728000000,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
@ -530,18 +525,17 @@
|
|||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 65000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 134217728000000,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
@ -623,20 +617,22 @@
|
|||
"-a"
|
||||
],
|
||||
"env": [],
|
||||
"stdin": {
|
||||
"content": ""
|
||||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 95656304705536,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 91224961,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
@ -670,11 +666,7 @@
|
|||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 95656304705536,
|
||||
"procLimit": 50,
|
||||
"copyOut": [
|
||||
"stdout",
|
||||
"stderr"
|
||||
]
|
||||
"procLimit": 50
|
||||
},
|
||||
{
|
||||
"stdin": {
|
||||
|
@ -683,11 +675,7 @@
|
|||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 95656304705536,
|
||||
"procLimit": 50,
|
||||
"copyOut": [
|
||||
"stdout",
|
||||
"stderr"
|
||||
]
|
||||
"procLimit": 50
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -762,10 +750,22 @@
|
|||
"env": [
|
||||
"LOG_FILE_PATH=/home/tt/.cache/joint-teapot-debug.log"
|
||||
],
|
||||
"stdin": {
|
||||
"content": ""
|
||||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 128000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
|
|
@ -32,18 +32,17 @@
|
|||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 65000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 134217728000000,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
|
|
@ -32,18 +32,17 @@
|
|||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 65000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 134217728000000,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
|
|
@ -31,18 +31,17 @@
|
|||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 65000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 134217728000000,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
|
|
@ -22,20 +22,22 @@
|
|||
"-a"
|
||||
],
|
||||
"env": [],
|
||||
"stdin": {
|
||||
"content": ""
|
||||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 95656304705536,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 91224961,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
@ -67,11 +69,7 @@
|
|||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 95656304705536,
|
||||
"procLimit": 50,
|
||||
"copyOut": [
|
||||
"stdout",
|
||||
"stderr"
|
||||
]
|
||||
"procLimit": 50
|
||||
},
|
||||
{
|
||||
"stdin": {
|
||||
|
@ -80,11 +78,7 @@
|
|||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 95656304705536,
|
||||
"procLimit": 50,
|
||||
"copyOut": [
|
||||
"stdout",
|
||||
"stderr"
|
||||
]
|
||||
"procLimit": 50
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -30,18 +30,17 @@
|
|||
},
|
||||
"stdout": {
|
||||
"name": "stdout",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"stderr": {
|
||||
"name": "stderr",
|
||||
"max": 128000000000000000,
|
||||
"max": 33554432,
|
||||
"pipe": true
|
||||
},
|
||||
"cpuLimit": 1000000000000000000,
|
||||
"realCpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000000000000,
|
||||
"memoryLimit": 134217728000000,
|
||||
"cpuLimit": 1000000000,
|
||||
"clockLimit": 2000000000,
|
||||
"memoryLimit": 134217728,
|
||||
"stackLimit": 0,
|
||||
"procLimit": 50,
|
||||
"cpuRateLimit": 0,
|
||||
|
|
Loading…
Reference in New Issue
Block a user
what compact?
no int input, should be done already, so it can be removed. I added that several commit before before you removed that 😇