MCPcopy Create free account
hub / github.com/LanceLRQ/deer-executor / saveExitRusage

Method saveExitRusage

executor/analysis.go:18–53  ·  view source on GitHub ↗

分析进程资源占用

(rst *commonStructs.TestCaseResult, pinfo *ProcessInfo, judger bool)

Source from the content-addressed store, hash-verified

16
17// 分析进程资源占用
18func (session *JudgeSession) saveExitRusage(rst *commonStructs.TestCaseResult, pinfo *ProcessInfo, judger bool) {
19 ru := pinfo.Rusage
20 status := pinfo.Status
21
22 tu := int(ru.Utime.Sec*1000 + int64(ru.Utime.Usec)/1000 + ru.Stime.Sec*1000 + int64(ru.Stime.Usec)/1000)
23 //maxrss := ru.Maxrss
24 //if runtime.GOOS == "darwin" {
25 // maxrss = maxrss / 1024
26 //}
27 mu := int(ru.Minflt * int64(syscall.Getpagesize()/1024))
28
29 // 特判
30 if judger {
31 rst.SPJTimeUsed = tu
32 rst.SPJMemoryUsed = mu
33 rst.SPJReSignum = int(status.Signal())
34 session.Logger.Infof(
35 "checker exit with code: %d, signum: %d, Time used: %d, Mem used: %d.",
36 pinfo.Status.ExitStatus(),
37 rst.SPJReSignum,
38 rst.SPJTimeUsed,
39 rst.SPJMemoryUsed,
40 )
41 } else {
42 rst.TimeUsed = tu
43 rst.MemoryUsed = mu
44 rst.ReSignum = int(status.Signal())
45 session.Logger.Infof(
46 "program exit with code: %d, signum: %d, Time used: %d, Mem used: %d.",
47 pinfo.Status.ExitStatus(),
48 rst.ReSignum,
49 rst.TimeUsed,
50 rst.MemoryUsed,
51 )
52 }
53}
54
55// 分析进程退出状态
56func (session *JudgeSession) analysisExitStatus(rst *commonStructs.TestCaseResult, pinfo *ProcessInfo, judger bool) {

Callers 1

JudgeOnceMethod · 0.95

Calls 2

InfofMethod · 0.80
SignalMethod · 0.65

Tested by

no test coverage detected