mirror of
https://github.com/jkstack/libagent.git
synced 2025-12-24 12:11:57 +08:00
46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
package limit
|
||
|
||
import (
|
||
"encoding/json"
|
||
|
||
"github.com/jkstack/jkframe/utils"
|
||
)
|
||
|
||
// DiskLimit 磁盘限制配置
|
||
type DiskLimit struct {
|
||
// 磁盘设备编号,可使用lsblk进行查询,如: 8:0
|
||
Dev string `json:"dev" yaml:"dev" kv:"dev"`
|
||
// 每秒读取字节数,为0表示不限制
|
||
ReadBytes utils.Bytes `json:"read_bytes" yaml:"read_bytes" kv:"read_bytes"`
|
||
// 每秒写入字节数,为0表示不限制
|
||
WriteBytes utils.Bytes `json:"write_bytes" yaml:"write_bytes" kv:"write_bytes"`
|
||
// 每秒并发读取次数,为0表示不限制
|
||
ReadIOPS uint64 `json:"read_iops" yaml:"read_iops" kv:"read_iops"`
|
||
// 每秒并发写入次数,为0表示不限制
|
||
WriteIOPS uint64 `json:"write_iops" yaml:"write_iops" kv:"write_iops"`
|
||
}
|
||
|
||
// Configure 资源限制配置
|
||
type Configure struct {
|
||
// CPU使用率限制,100表示1个核心
|
||
CPUQuota int64 `json:"cpu_quota" yaml:"cpu_quota" kv:"cpu_quota"`
|
||
// 内存使用限制
|
||
Memory utils.Bytes `json:"memory_limit" yaml:"memory_limit" kv:"memory_limit"`
|
||
// 磁盘限制
|
||
Disks diskLimits `json:"disk_limit" yaml:"disk_limit" kv:"disk_limit"`
|
||
}
|
||
|
||
type diskLimits []DiskLimit
|
||
|
||
func (limits diskLimits) MarshalKV() (string, error) {
|
||
data, err := json.Marshal(limits)
|
||
if err != nil {
|
||
return "", err
|
||
}
|
||
return string(data), nil
|
||
}
|
||
|
||
func (limits *diskLimits) UnmarshalKV(data string) error {
|
||
return json.Unmarshal([]byte(data), limits)
|
||
}
|