Skip to content

Commit

Permalink
Fixes to Resource Enveloping (#82)
Browse files Browse the repository at this point in the history
  • Loading branch information
MatiasFrank authored Sep 13, 2023
1 parent 57f9fbe commit ffa0904
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 24 deletions.
11 changes: 9 additions & 2 deletions cmd/rig/cmd/capsule/get_resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,17 @@ func GetResources(ctx context.Context, cmd *cobra.Command, capsuleID CapsuleID,
t.AppendRows([]table.Row{{"", "Requests", "Limits"}})
t.AppendSeparator()
t.AppendRows([]table.Row{
{"CPU", milliIntToString(uint64(requests.Cpu)), milliIntToString(uint64(limits.Cpu))},
{"Memory", intToByteString(requests.Memory), intToByteString(limits.Memory)},
{"CPU", milliIntToString(uint64(requests.CpuMillis)), formatLimitString(milliIntToString, uint64(limits.CpuMillis))},
{"Memory", intToByteString(requests.MemoryBytes), formatLimitString(intToByteString, limits.MemoryBytes)},
})
cmd.Println(t.Render())

return nil
}

func formatLimitString(fmt func(uint64) string, n uint64) string {
if n == 0 {
return "-"
}
return fmt(n)
}
17 changes: 13 additions & 4 deletions cmd/rig/cmd/capsule/set_resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ func setResourcesInteractive(curResources *capsule.Resources) error {
break
}

isLimit := i == 1
var cpu string
var mem string
for {
Expand All @@ -110,11 +111,19 @@ func setResourcesInteractive(curResources *capsule.Resources) error {
switch i {
case 0:
name = "CPU"
current = milliIntToString(uint64(curR.Cpu))
if curR.GetCpuMillis() == 0 && isLimit {
current = "-"
} else {
current = milliIntToString(uint64(curR.GetCpuMillis()))
}
resourceString = &cpu
case 1:
name = "memory"
current = intToByteString(curR.Memory)
if curR.GetMemoryBytes() == 0 && isLimit {
current = "-"
} else {
current = intToByteString(curR.GetMemoryBytes())
}
resourceString = &mem
default:
done = true
Expand Down Expand Up @@ -163,15 +172,15 @@ func updateResources(resources *capsule.ResourceList, cpu, mem string) error {
if err != nil {
return err
}
resources.Cpu = milliCPU
resources.CpuMillis = milliCPU
}

if mem != "" {
mem, err := parseBytes(mem)
if err != nil {
return nil
}
resources.Memory = mem
resources.MemoryBytes = mem
}

return nil
Expand Down
4 changes: 2 additions & 2 deletions internal/client/docker/capsule.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ func (c *Client) UpsertCapsule(ctx context.Context, capsuleName string, cc *clus
Name: "always",
},
Resources: container.Resources{
Memory: int64(limits.GetMemory()),
NanoCPUs: int64(limits.GetCpu() * 1_000_000),
Memory: int64(limits.GetMemoryBytes()),
NanoCPUs: int64(limits.GetCpuMillis() * 1_000_000),
},
}

Expand Down
8 changes: 4 additions & 4 deletions internal/client/k8s/upsert_capsule.go
Original file line number Diff line number Diff line change
Expand Up @@ -433,11 +433,11 @@ func makeResources(cc *cluster.Capsule) *acsv1.ResourceRequirementsApplyConfigur
}

func fillResourceList(r *capsule.ResourceList, list v1.ResourceList) {
if r.Cpu != 0 {
list[v1.ResourceCPU] = resource.MustParse(fmt.Sprintf("%vm", r.Cpu))
if r.GetCpuMillis() != 0 {
list[v1.ResourceCPU] = resource.MustParse(fmt.Sprintf("%vm", r.GetCpuMillis()))
}
if r.Memory != 0 {
list[v1.ResourceMemory] = *resource.NewQuantity(int64(r.Memory), resource.DecimalSI)
if r.GetMemoryBytes() != 0 {
list[v1.ResourceMemory] = *resource.NewQuantity(int64(r.GetMemoryBytes()), resource.DecimalSI)
}
}

Expand Down
16 changes: 8 additions & 8 deletions pkg/utils/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import (

var DefaultResources = &capsule.Resources{
Requests: &capsule.ResourceList{
Cpu: 200,
Memory: 512_000_000,
CpuMillis: 200,
MemoryBytes: 512_000_000,
},
Limits: &capsule.ResourceList{
Cpu: 0,
Memory: 0,
CpuMillis: 0,
MemoryBytes: 0,
},
}

Expand All @@ -28,10 +28,10 @@ func FeedDefaultResources(r *capsule.Resources) {
}

func feedDefaultResourceList(r, defaultR *capsule.ResourceList) {
if r.Cpu == 0 {
r.Cpu = defaultR.Cpu
if r.CpuMillis == 0 {
r.CpuMillis = defaultR.CpuMillis
}
if r.Memory == 0 {
r.Memory = defaultR.Memory
if r.MemoryBytes == 0 {
r.MemoryBytes = defaultR.MemoryBytes
}
}
6 changes: 2 additions & 4 deletions proto/rig/api/v1/capsule/rollout.proto
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,9 @@ message Resources {

message ResourceList {
// Unit: milli-CPUs
uint32 cpu = 1;
uint32 cpu_millis = 1;
// Unit: Bytes
uint64 memory = 2;
// Unit: Bytes
uint64 ephemeral_storage = 3;
uint64 memory_bytes = 2;
}

message Network {
Expand Down

0 comments on commit ffa0904

Please sign in to comment.