mirror of
https://github.com/datarhei/core.git
synced 2025-10-06 08:27:08 +08:00
Propagate number of logical CPUs in resource usage
This commit is contained in:
27
docs/docs.go
27
docs/docs.go
@@ -2479,6 +2479,7 @@ const docTemplate = `{
|
|||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"force_gc": {
|
"force_gc": {
|
||||||
|
"description": "deprecated, use MemoryLimit instead",
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"format": "int"
|
"format": "int"
|
||||||
},
|
},
|
||||||
@@ -2641,6 +2642,17 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"resources": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"max_cpu_usage": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"max_memory_usage": {
|
||||||
|
"type": "number"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"router": {
|
"router": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -3707,6 +3719,9 @@ const docTemplate = `{
|
|||||||
},
|
},
|
||||||
"max": {
|
"max": {
|
||||||
"type": "number"
|
"type": "number"
|
||||||
|
},
|
||||||
|
"ncpu": {
|
||||||
|
"type": "number"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -4498,6 +4513,7 @@ const docTemplate = `{
|
|||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"force_gc": {
|
"force_gc": {
|
||||||
|
"description": "deprecated, use MemoryLimit instead",
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"format": "int"
|
"format": "int"
|
||||||
},
|
},
|
||||||
@@ -4660,6 +4676,17 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"resources": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"max_cpu_usage": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"max_memory_usage": {
|
||||||
|
"type": "number"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"router": {
|
"router": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@@ -2472,6 +2472,7 @@
|
|||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"force_gc": {
|
"force_gc": {
|
||||||
|
"description": "deprecated, use MemoryLimit instead",
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"format": "int"
|
"format": "int"
|
||||||
},
|
},
|
||||||
@@ -2634,6 +2635,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"resources": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"max_cpu_usage": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"max_memory_usage": {
|
||||||
|
"type": "number"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"router": {
|
"router": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -3700,6 +3712,9 @@
|
|||||||
},
|
},
|
||||||
"max": {
|
"max": {
|
||||||
"type": "number"
|
"type": "number"
|
||||||
|
},
|
||||||
|
"ncpu": {
|
||||||
|
"type": "number"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -4491,6 +4506,7 @@
|
|||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"force_gc": {
|
"force_gc": {
|
||||||
|
"description": "deprecated, use MemoryLimit instead",
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"format": "int"
|
"format": "int"
|
||||||
},
|
},
|
||||||
@@ -4653,6 +4669,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"resources": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"max_cpu_usage": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"max_memory_usage": {
|
||||||
|
"type": "number"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"router": {
|
"router": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@@ -146,6 +146,7 @@ definitions:
|
|||||||
auto_max_procs:
|
auto_max_procs:
|
||||||
type: boolean
|
type: boolean
|
||||||
force_gc:
|
force_gc:
|
||||||
|
description: deprecated, use MemoryLimit instead
|
||||||
format: int
|
format: int
|
||||||
type: integer
|
type: integer
|
||||||
memory_limit_mbytes:
|
memory_limit_mbytes:
|
||||||
@@ -256,6 +257,13 @@ definitions:
|
|||||||
format: int
|
format: int
|
||||||
type: integer
|
type: integer
|
||||||
type: object
|
type: object
|
||||||
|
resources:
|
||||||
|
properties:
|
||||||
|
max_cpu_usage:
|
||||||
|
type: number
|
||||||
|
max_memory_usage:
|
||||||
|
type: number
|
||||||
|
type: object
|
||||||
router:
|
router:
|
||||||
properties:
|
properties:
|
||||||
blocked_prefixes:
|
blocked_prefixes:
|
||||||
@@ -974,6 +982,8 @@ definitions:
|
|||||||
type: number
|
type: number
|
||||||
max:
|
max:
|
||||||
type: number
|
type: number
|
||||||
|
ncpu:
|
||||||
|
type: number
|
||||||
type: object
|
type: object
|
||||||
api.ProcessUsageMemory:
|
api.ProcessUsageMemory:
|
||||||
properties:
|
properties:
|
||||||
@@ -1575,6 +1585,7 @@ definitions:
|
|||||||
auto_max_procs:
|
auto_max_procs:
|
||||||
type: boolean
|
type: boolean
|
||||||
force_gc:
|
force_gc:
|
||||||
|
description: deprecated, use MemoryLimit instead
|
||||||
format: int
|
format: int
|
||||||
type: integer
|
type: integer
|
||||||
memory_limit_mbytes:
|
memory_limit_mbytes:
|
||||||
@@ -1685,6 +1696,13 @@ definitions:
|
|||||||
format: int
|
format: int
|
||||||
type: integer
|
type: integer
|
||||||
type: object
|
type: object
|
||||||
|
resources:
|
||||||
|
properties:
|
||||||
|
max_cpu_usage:
|
||||||
|
type: number
|
||||||
|
max_memory_usage:
|
||||||
|
type: number
|
||||||
|
type: object
|
||||||
router:
|
router:
|
||||||
properties:
|
properties:
|
||||||
blocked_prefixes:
|
blocked_prefixes:
|
||||||
|
@@ -573,6 +573,7 @@ func (p *parser) parseAVstreamProgress(line string) error {
|
|||||||
func (p *parser) Stop(state string, pusage process.Usage) {
|
func (p *parser) Stop(state string, pusage process.Usage) {
|
||||||
usage := Usage{}
|
usage := Usage{}
|
||||||
|
|
||||||
|
usage.CPU.NCPU = pusage.CPU.NCPU
|
||||||
usage.CPU.Average = pusage.CPU.Average
|
usage.CPU.Average = pusage.CPU.Average
|
||||||
usage.CPU.Max = pusage.CPU.Max
|
usage.CPU.Max = pusage.CPU.Max
|
||||||
usage.CPU.Limit = pusage.CPU.Limit
|
usage.CPU.Limit = pusage.CPU.Limit
|
||||||
|
@@ -324,6 +324,7 @@ type AVstream struct {
|
|||||||
|
|
||||||
type Usage struct {
|
type Usage struct {
|
||||||
CPU struct {
|
CPU struct {
|
||||||
|
NCPU float64
|
||||||
Average float64
|
Average float64
|
||||||
Max float64
|
Max float64
|
||||||
Limit float64
|
Limit float64
|
||||||
|
@@ -229,6 +229,7 @@ func (s *ProcessState) Unmarshal(state *app.State) {
|
|||||||
s.Memory = state.Memory
|
s.Memory = state.Memory
|
||||||
s.CPU = toNumber(state.CPU)
|
s.CPU = toNumber(state.CPU)
|
||||||
s.Resources.CPU = ProcessUsageCPU{
|
s.Resources.CPU = ProcessUsageCPU{
|
||||||
|
NCPU: toNumber(state.Resources.CPU.NCPU),
|
||||||
Current: toNumber(state.Resources.CPU.Current),
|
Current: toNumber(state.Resources.CPU.Current),
|
||||||
Average: toNumber(state.Resources.CPU.Average),
|
Average: toNumber(state.Resources.CPU.Average),
|
||||||
Max: toNumber(state.Resources.CPU.Max),
|
Max: toNumber(state.Resources.CPU.Max),
|
||||||
@@ -246,6 +247,7 @@ func (s *ProcessState) Unmarshal(state *app.State) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ProcessUsageCPU struct {
|
type ProcessUsageCPU struct {
|
||||||
|
NCPU json.Number `json:"ncpu" swaggertype:"number" jsonschema:"type=number"`
|
||||||
Current json.Number `json:"cur" swaggertype:"number" jsonschema:"type=number"`
|
Current json.Number `json:"cur" swaggertype:"number" jsonschema:"type=number"`
|
||||||
Average json.Number `json:"avg" swaggertype:"number" jsonschema:"type=number"`
|
Average json.Number `json:"avg" swaggertype:"number" jsonschema:"type=number"`
|
||||||
Max json.Number `json:"max" swaggertype:"number" jsonschema:"type=number"`
|
Max json.Number `json:"max" swaggertype:"number" jsonschema:"type=number"`
|
||||||
|
@@ -55,6 +55,7 @@ func (report *ProcessReport) Unmarshal(l *app.Log) {
|
|||||||
ExitState: h.ExitState,
|
ExitState: h.ExitState,
|
||||||
Resources: &ProcessUsage{
|
Resources: &ProcessUsage{
|
||||||
CPU: ProcessUsageCPU{
|
CPU: ProcessUsageCPU{
|
||||||
|
NCPU: toNumber(h.Usage.CPU.NCPU),
|
||||||
Average: toNumber(h.Usage.CPU.Average),
|
Average: toNumber(h.Usage.CPU.Average),
|
||||||
Max: toNumber(h.Usage.CPU.Max),
|
Max: toNumber(h.Usage.CPU.Max),
|
||||||
Limit: toNumber(h.Usage.CPU.Limit),
|
Limit: toNumber(h.Usage.CPU.Limit),
|
||||||
|
@@ -81,6 +81,7 @@ type Status struct {
|
|||||||
Time time.Time // Time is the time of the last change of the state
|
Time time.Time // Time is the time of the last change of the state
|
||||||
CommandArgs []string // Currently running command arguments
|
CommandArgs []string // Currently running command arguments
|
||||||
CPU struct {
|
CPU struct {
|
||||||
|
NCPU float64 // Number of logical CPUs
|
||||||
Current float64 // Currently consumed CPU in percent
|
Current float64 // Currently consumed CPU in percent
|
||||||
Average float64 // Average consumed CPU in percent
|
Average float64 // Average consumed CPU in percent
|
||||||
Max float64 // Max. consumed CPU in percent
|
Max float64 // Max. consumed CPU in percent
|
||||||
@@ -432,14 +433,10 @@ func (p *process) Status() Status {
|
|||||||
Reconnect: time.Duration(-1),
|
Reconnect: time.Duration(-1),
|
||||||
Duration: time.Since(stateTime),
|
Duration: time.Since(stateTime),
|
||||||
Time: stateTime,
|
Time: stateTime,
|
||||||
|
CPU: usage.CPU,
|
||||||
Memory: usage.Memory,
|
Memory: usage.Memory,
|
||||||
}
|
}
|
||||||
|
|
||||||
s.CPU.Current = usage.CPU.Current
|
|
||||||
s.CPU.Average = usage.CPU.Average
|
|
||||||
s.CPU.Max = usage.CPU.Max
|
|
||||||
s.CPU.Limit = usage.CPU.Limit
|
|
||||||
|
|
||||||
s.CommandArgs = make([]string, len(p.args))
|
s.CommandArgs = make([]string, len(p.args))
|
||||||
copy(s.CommandArgs, p.args)
|
copy(s.CommandArgs, p.args)
|
||||||
|
|
||||||
|
@@ -165,10 +165,11 @@ type State struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ProcessUsageCPU struct {
|
type ProcessUsageCPU struct {
|
||||||
Current float64 // percent 0-100
|
NCPU float64 // Number of logical CPUs
|
||||||
Average float64 // percent 0-100
|
Current float64 // percent 0-100*ncpu
|
||||||
Max float64 // percent 0-100
|
Average float64 // percent 0-100*ncpu
|
||||||
Limit float64 // percent 0-100
|
Max float64 // percent 0-100*ncpu
|
||||||
|
Limit float64 // percent 0-100*ncpu
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProcessUsageMemory struct {
|
type ProcessUsageMemory struct {
|
||||||
|
@@ -1409,7 +1409,7 @@ func (r *restream) GetProcessState(id string) (*app.State, error) {
|
|||||||
state.States.Marshal(status.States)
|
state.States.Marshal(status.States)
|
||||||
state.Time = status.Time.Unix()
|
state.Time = status.Time.Unix()
|
||||||
state.Memory = status.Memory.Current
|
state.Memory = status.Memory.Current
|
||||||
state.CPU = status.CPU.Current
|
state.CPU = status.CPU.Current / status.CPU.NCPU
|
||||||
state.Resources.CPU = status.CPU
|
state.Resources.CPU = status.CPU
|
||||||
state.Resources.Memory = status.Memory
|
state.Resources.Memory = status.Memory
|
||||||
state.Duration = status.Duration.Round(10 * time.Millisecond).Seconds()
|
state.Duration = status.Duration.Round(10 * time.Millisecond).Seconds()
|
||||||
@@ -1587,6 +1587,7 @@ func (r *restream) GetProcessLog(id string) (*app.Log, error) {
|
|||||||
ExitState: h.ExitState,
|
ExitState: h.ExitState,
|
||||||
Usage: app.ProcessUsage{
|
Usage: app.ProcessUsage{
|
||||||
CPU: app.ProcessUsageCPU{
|
CPU: app.ProcessUsageCPU{
|
||||||
|
NCPU: h.Usage.CPU.NCPU,
|
||||||
Average: h.Usage.CPU.Average,
|
Average: h.Usage.CPU.Average,
|
||||||
Max: h.Usage.CPU.Max,
|
Max: h.Usage.CPU.Max,
|
||||||
Limit: h.Usage.CPU.Limit,
|
Limit: h.Usage.CPU.Limit,
|
||||||
|
Reference in New Issue
Block a user