1package configs 2 3import "fmt" 4 5// blockIODevice holds major:minor format supported in blkio cgroup 6type blockIODevice struct { 7 // Major is the device's major number 8 Major int64 `json:"major"` 9 // Minor is the device's minor number 10 Minor int64 `json:"minor"` 11} 12 13// WeightDevice struct holds a `major:minor weight`|`major:minor leaf_weight` pair 14type WeightDevice struct { 15 blockIODevice 16 // Weight is the bandwidth rate for the device, range is from 10 to 1000 17 Weight uint16 `json:"weight"` 18 // LeafWeight is the bandwidth rate for the device while competing with the cgroup's child cgroups, range is from 10 to 1000, cfq scheduler only 19 LeafWeight uint16 `json:"leafWeight"` 20} 21 22// NewWeightDevice returns a configured WeightDevice pointer 23func NewWeightDevice(major, minor int64, weight, leafWeight uint16) *WeightDevice { 24 wd := &WeightDevice{} 25 wd.Major = major 26 wd.Minor = minor 27 wd.Weight = weight 28 wd.LeafWeight = leafWeight 29 return wd 30} 31 32// WeightString formats the struct to be writable to the cgroup specific file 33func (wd *WeightDevice) WeightString() string { 34 return fmt.Sprintf("%d:%d %d", wd.Major, wd.Minor, wd.Weight) 35} 36 37// LeafWeightString formats the struct to be writable to the cgroup specific file 38func (wd *WeightDevice) LeafWeightString() string { 39 return fmt.Sprintf("%d:%d %d", wd.Major, wd.Minor, wd.LeafWeight) 40} 41 42// ThrottleDevice struct holds a `major:minor rate_per_second` pair 43type ThrottleDevice struct { 44 blockIODevice 45 // Rate is the IO rate limit per cgroup per device 46 Rate uint64 `json:"rate"` 47} 48 49// NewThrottleDevice returns a configured ThrottleDevice pointer 50func NewThrottleDevice(major, minor int64, rate uint64) *ThrottleDevice { 51 td := &ThrottleDevice{} 52 td.Major = major 53 td.Minor = minor 54 td.Rate = rate 55 return td 56} 57 58// String formats the struct to be writable to the cgroup specific file 59func (td *ThrottleDevice) String() string { 60 return fmt.Sprintf("%d:%d %d", td.Major, td.Minor, td.Rate) 61} 62