diff --git a/go.mod b/go.mod index e6cd1ea..992bdc7 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/criyle/go-judge go 1.14 require ( - github.com/criyle/go-sandbox v0.1.2 + github.com/criyle/go-sandbox v0.1.3 github.com/googollee/go-engine.io v1.4.3-0.20200211083925-ac1f0a0b48dd github.com/googollee/go-socket.io v1.4.2 github.com/gorilla/websocket v1.4.1 // indirect diff --git a/go.sum b/go.sum index d7868ec..de22753 100644 --- a/go.sum +++ b/go.sum @@ -12,8 +12,8 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/criyle/go-sandbox v0.1.2 h1:efm4IVgTrItdBUCsRTXAvit275Liv5LmEVP2WikKEB4= -github.com/criyle/go-sandbox v0.1.2/go.mod h1:rCcDFq74cfstBXwNhZSBOUQXBd/kGbvxUHCms+MNHL4= +github.com/criyle/go-sandbox v0.1.3 h1:5Sj5CK8IDUSJJB3DFiqZU72T6+C2r7SWE7Osb0i7VBk= +github.com/criyle/go-sandbox v0.1.3/go.mod h1:xsB0o+e5kY1B3l6DB5bfbKLMv1KTYSW3wkPczIeAHVQ= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -128,8 +128,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200301040627-c5d0d7b4ec88 h1:LNVdAhESTW4gWDhYvciNcGoS9CEcxRiUKE9kSgw+X3s= +golang.org/x/sys v0.0.0-20200301040627-c5d0d7b4ec88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/runner/pool.go b/runner/pool.go index e2c8d59..c5bd775 100644 --- a/runner/pool.go +++ b/runner/pool.go @@ -83,7 +83,14 @@ func (c *wCgroup) CPUUsage() (time.Duration, error) { func (c *wCgroup) MemoryUsage() (stypes.Size, error) { s, err := (*cgroup.CGroup)(c).MemoryMaxUsageInBytes() - return stypes.Size(s), err + if err != nil { + return 0, err + } + cache, err := (*cgroup.CGroup)(c).FindMemoryStatProperty("cache") + if err != nil { + return 0, err + } + return stypes.Size(s - cache), err } func (c *wCgroup) AddProc(pid int) error {