fix(controller,apiserver,xcecli): expose job CPU peak and efficiency to the apiserver and xcecli (bug-1736)
The controller computed run usage (CPU time, memory, CPU peak and efficiency, LSF bjobs -l definitions) but the capnp Job struct had no field for it, so the job pushed to the apiserver never carried it, and snapshots (the same struct) dropped it: a job restored from a checkpoint lost its accumulated usage. - controller.capnp: Job.runUsage @13 (JobRunusage); old entries decode with no run usage. - apiserver: map run_usage into JobInfo; max_mem, avg_mem, used_mem, cpu_time, peak_cpu, peak_cpu_time, peak_cpu_duration, mem_efficiency, avg_cpu_efficiency, peak_cpu_efficiency become queryable columns. - xcecli: -o fields MAX_MEM, AVG_MEM, MEM_EFFICIENCY, CPU_PEAK, CPU_PEAK_DURATION, CPU_EFFICIENCY, CPU_PEAK_EFFICIENCY (CPU_TIME now renders too), and a MEMORY USAGE / CPU USAGE block in jobs list -l. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e2472aa73c
commit
1cedd7f791
9 changed files with 466 additions and 56 deletions
|
|
@ -31,6 +31,14 @@ const (
|
|||
HEADER_JOB_NUM_PROCESSORS = "NUM_PROCESSORS"
|
||||
HEADER_JOB_INTERACTIVE_URL = "INTERACTIVE_URL"
|
||||
HEADER_JOB_PENDING_REASON = "PENDING_REASON"
|
||||
// run usage (bug-1736)
|
||||
HEADER_JOB_MAX_MEM = "MAX_MEM"
|
||||
HEADER_JOB_AVG_MEM = "AVG_MEM"
|
||||
HEADER_JOB_MEM_EFFICIENCY = "MEM_EFFICIENCY"
|
||||
HEADER_JOB_CPU_PEAK = "CPU_PEAK"
|
||||
HEADER_JOB_CPU_PEAK_DURATION = "CPU_PEAK_DURATION"
|
||||
HEADER_JOB_CPU_EFFICIENCY = "CPU_EFFICIENCY"
|
||||
HEADER_JOB_CPU_PEAK_EFFICIENCY = "CPU_PEAK_EFFICIENCY"
|
||||
|
||||
// second line
|
||||
HEADER_JOB_R15S = "r15s"
|
||||
|
|
@ -120,6 +128,7 @@ type QueryJob struct {
|
|||
AvgMem float64 `json:"avg_mem"`
|
||||
UsedMem float64 `json:"used_mem"`
|
||||
CPUTime int `json:"cpu_time"`
|
||||
PeakCPU float64 `json:"peak_cpu"` // highest cores used at once (bug-1736)
|
||||
PeakCPUTime int `json:"peak_cpu_time"`
|
||||
PeakCPUDuration float64 `json:"peak_cpu_duration"`
|
||||
MemEfficiency float64 `json:"mem_efficiency"` // Memory efficiency in percentage
|
||||
|
|
@ -184,30 +193,37 @@ type QueryJob struct {
|
|||
}
|
||||
|
||||
var JobFieldsMap = map[string]string{
|
||||
HEADER_JOB_JOBID: "job_id",
|
||||
HEADER_JOB_USER: "submit_user",
|
||||
HEADER_JOB_STATUS: "job_status",
|
||||
HEADER_JOB_QUEUE: "queue_name",
|
||||
HEADER_JOB_COMMAND: "command",
|
||||
HEADER_JOB_NAME: "job_name",
|
||||
HEADER_JOB_SUBMIT_TIME: "submit_time",
|
||||
HEADER_JOB_FROM_HOST: "from_host",
|
||||
HEADER_JOB_EXEC_HOST: "exec_hosts",
|
||||
HEADER_JOB_CORE_LIMIT: "core_limit",
|
||||
HEADER_JOB_MEM_LIMIT: "mem_limit",
|
||||
HEADER_JOB_PID: "pids",
|
||||
HEADER_JOB_PGID: "pgids",
|
||||
HEADER_JOB_PROJECT_NAME: "project_name",
|
||||
HEADER_JOB_START_TIME: "start_time",
|
||||
HEADER_JOB_END_TIME: "end_time",
|
||||
HEADER_JOB_CWD: "cwd",
|
||||
HEADER_JOB_CPU_TIME: "cpu_time",
|
||||
HEADER_JOB_RESREQ: "resreq",
|
||||
HEADER_JOB_DESCRIPTION: "job_description",
|
||||
HEADER_JOB_LAUNCH_TYPE: "launch_type",
|
||||
HEADER_JOB_NUM_PROCESSORS: "num_processors",
|
||||
HEADER_JOB_INTERACTIVE_URL: "interactive_job_url",
|
||||
HEADER_JOB_PENDING_REASON: "pending_reason",
|
||||
HEADER_JOB_JOBID: "job_id",
|
||||
HEADER_JOB_USER: "submit_user",
|
||||
HEADER_JOB_STATUS: "job_status",
|
||||
HEADER_JOB_QUEUE: "queue_name",
|
||||
HEADER_JOB_COMMAND: "command",
|
||||
HEADER_JOB_NAME: "job_name",
|
||||
HEADER_JOB_SUBMIT_TIME: "submit_time",
|
||||
HEADER_JOB_FROM_HOST: "from_host",
|
||||
HEADER_JOB_EXEC_HOST: "exec_hosts",
|
||||
HEADER_JOB_CORE_LIMIT: "core_limit",
|
||||
HEADER_JOB_MEM_LIMIT: "mem_limit",
|
||||
HEADER_JOB_PID: "pids",
|
||||
HEADER_JOB_PGID: "pgids",
|
||||
HEADER_JOB_PROJECT_NAME: "project_name",
|
||||
HEADER_JOB_START_TIME: "start_time",
|
||||
HEADER_JOB_END_TIME: "end_time",
|
||||
HEADER_JOB_CWD: "cwd",
|
||||
HEADER_JOB_CPU_TIME: "cpu_time",
|
||||
HEADER_JOB_RESREQ: "resreq",
|
||||
HEADER_JOB_DESCRIPTION: "job_description",
|
||||
HEADER_JOB_LAUNCH_TYPE: "launch_type",
|
||||
HEADER_JOB_NUM_PROCESSORS: "num_processors",
|
||||
HEADER_JOB_INTERACTIVE_URL: "interactive_job_url",
|
||||
HEADER_JOB_PENDING_REASON: "pending_reason",
|
||||
HEADER_JOB_MAX_MEM: "max_mem",
|
||||
HEADER_JOB_AVG_MEM: "avg_mem",
|
||||
HEADER_JOB_MEM_EFFICIENCY: "mem_efficiency",
|
||||
HEADER_JOB_CPU_PEAK: "peak_cpu",
|
||||
HEADER_JOB_CPU_PEAK_DURATION: "peak_cpu_duration",
|
||||
HEADER_JOB_CPU_EFFICIENCY: "avg_cpu_efficiency",
|
||||
HEADER_JOB_CPU_PEAK_EFFICIENCY: "peak_cpu_efficiency",
|
||||
//job_filter.HEADER_JOB_PRIORITY: "job_priority",
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue