Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions pkg/monitor/nvidia/v0/spec.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ func (s Spec) activeProcs() []shrregProcSlotT {
func (s Spec) DeviceMemoryContextSize(idx int) uint64 {
v := uint64(0)
for _, p := range s.activeProcs() {
if p.status == 0 {
continue
}
v += p.used[idx].contextSize
}
return v
Expand All @@ -100,6 +103,9 @@ func (s Spec) DeviceMemoryContextSize(idx int) uint64 {
func (s Spec) DeviceMemoryModuleSize(idx int) uint64 {
v := uint64(0)
for _, p := range s.activeProcs() {
if p.status == 0 {
continue
}
v += p.used[idx].moduleSize
}
return v
Expand All @@ -108,6 +114,9 @@ func (s Spec) DeviceMemoryModuleSize(idx int) uint64 {
func (s Spec) DeviceMemoryBufferSize(idx int) uint64 {
v := uint64(0)
for _, p := range s.activeProcs() {
if p.status == 0 {
continue
}
v += p.used[idx].bufferSize
}
return v
Expand All @@ -116,6 +125,9 @@ func (s Spec) DeviceMemoryBufferSize(idx int) uint64 {
func (s Spec) DeviceMemoryOffset(idx int) uint64 {
v := uint64(0)
for _, p := range s.activeProcs() {
if p.status == 0 {
continue
}
v += p.used[idx].offset
}
return v
Expand All @@ -124,6 +136,9 @@ func (s Spec) DeviceMemoryOffset(idx int) uint64 {
func (s Spec) DeviceMemoryTotal(idx int) uint64 {
v := uint64(0)
for _, p := range s.activeProcs() {
if p.status == 0 {
continue
}
v += p.used[idx].total
}
return v
Expand All @@ -132,6 +147,9 @@ func (s Spec) DeviceMemoryTotal(idx int) uint64 {
func (s Spec) DeviceSmUtil(idx int) uint64 {
v := uint64(0)
for _, p := range s.activeProcs() {
if p.status == 0 {
continue
}
v += p.deviceUtil[idx].smUtil
}
return v
Expand Down
151 changes: 115 additions & 36 deletions pkg/monitor/nvidia/v0/spec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ func TestSpec_DeviceMemoryContextSize(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{contextSize: 100}, {contextSize: 200}}},
{used: [16]deviceMemory{{contextSize: 300}, {contextSize: 400}}},
{status: 1, used: [16]deviceMemory{{contextSize: 100}, {contextSize: 200}}},
{status: 1, used: [16]deviceMemory{{contextSize: 300}, {contextSize: 400}}},
},
}},
input: 1,
Expand All @@ -81,8 +81,8 @@ func TestSpec_DeviceMemoryContextSize(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{contextSize: 100}, {contextSize: 200}}},
{used: [16]deviceMemory{{contextSize: 300}, {contextSize: 400}}},
{status: 1, used: [16]deviceMemory{{contextSize: 100}, {contextSize: 200}}},
{status: 1, used: [16]deviceMemory{{contextSize: 300}, {contextSize: 400}}},
},
}},
input: 0,
Expand All @@ -94,13 +94,26 @@ func TestSpec_DeviceMemoryContextSize(t *testing.T) {
num: 2,
procnum: 1,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{contextSize: 100}, {contextSize: 200}}},
{used: [16]deviceMemory{{contextSize: 300}, {contextSize: 400}}},
{status: 1, used: [16]deviceMemory{{contextSize: 100}, {contextSize: 200}}},
{status: 1, used: [16]deviceMemory{{contextSize: 300}, {contextSize: 400}}},
},
}},
input: 1,
expected: uint64(200),
},
{
name: "dead slot within procnum is excluded",
spec: &Spec{sr: &sharedRegionT{
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{status: 1, used: [16]deviceMemory{{contextSize: 200}}},
{status: 0, used: [16]deviceMemory{{contextSize: 999}}},
},
}},
input: 0,
expected: uint64(200),
},
}

for _, tt := range tests {
Expand All @@ -121,8 +134,8 @@ func TestSpec_DeviceMemoryModuleSize(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{moduleSize: 100}, {moduleSize: 200}}},
{used: [16]deviceMemory{{moduleSize: 300}, {moduleSize: 400}}},
{status: 1, used: [16]deviceMemory{{moduleSize: 100}, {moduleSize: 200}}},
{status: 1, used: [16]deviceMemory{{moduleSize: 300}, {moduleSize: 400}}},
},
}},
input: 1,
Expand All @@ -134,8 +147,8 @@ func TestSpec_DeviceMemoryModuleSize(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{moduleSize: 100}, {moduleSize: 200}}},
{used: [16]deviceMemory{{moduleSize: 300}, {moduleSize: 400}}},
{status: 1, used: [16]deviceMemory{{moduleSize: 100}, {moduleSize: 200}}},
{status: 1, used: [16]deviceMemory{{moduleSize: 300}, {moduleSize: 400}}},
},
}},
input: 0,
Expand All @@ -147,13 +160,26 @@ func TestSpec_DeviceMemoryModuleSize(t *testing.T) {
num: 2,
procnum: 1,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{moduleSize: 100}, {moduleSize: 200}}},
{used: [16]deviceMemory{{moduleSize: 300}, {moduleSize: 400}}},
{status: 1, used: [16]deviceMemory{{moduleSize: 100}, {moduleSize: 200}}},
{status: 1, used: [16]deviceMemory{{moduleSize: 300}, {moduleSize: 400}}},
},
}},
input: 1,
expected: uint64(200),
},
{
name: "dead slot within procnum is excluded",
spec: &Spec{sr: &sharedRegionT{
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{status: 1, used: [16]deviceMemory{{moduleSize: 150}}},
{status: 0, used: [16]deviceMemory{{moduleSize: 999}}},
},
}},
input: 0,
expected: uint64(150),
},
}

for _, tt := range tests {
Expand All @@ -174,8 +200,8 @@ func TestSpec_DeviceMemoryBufferSize(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{bufferSize: 100}, {bufferSize: 200}}},
{used: [16]deviceMemory{{bufferSize: 300}, {bufferSize: 400}}},
{status: 1, used: [16]deviceMemory{{bufferSize: 100}, {bufferSize: 200}}},
{status: 1, used: [16]deviceMemory{{bufferSize: 300}, {bufferSize: 400}}},
},
}},
input: 1,
Expand All @@ -187,8 +213,8 @@ func TestSpec_DeviceMemoryBufferSize(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{bufferSize: 100}, {bufferSize: 200}}},
{used: [16]deviceMemory{{bufferSize: 300}, {bufferSize: 400}}},
{status: 1, used: [16]deviceMemory{{bufferSize: 100}, {bufferSize: 200}}},
{status: 1, used: [16]deviceMemory{{bufferSize: 300}, {bufferSize: 400}}},
},
}},
input: 0,
Expand All @@ -200,13 +226,26 @@ func TestSpec_DeviceMemoryBufferSize(t *testing.T) {
num: 2,
procnum: 1,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{bufferSize: 100}, {bufferSize: 200}}},
{used: [16]deviceMemory{{bufferSize: 300}, {bufferSize: 400}}},
{status: 1, used: [16]deviceMemory{{bufferSize: 100}, {bufferSize: 200}}},
{status: 1, used: [16]deviceMemory{{bufferSize: 300}, {bufferSize: 400}}},
},
}},
input: 1,
expected: uint64(200),
},
{
name: "dead slot within procnum is excluded",
spec: &Spec{sr: &sharedRegionT{
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{status: 1, used: [16]deviceMemory{{bufferSize: 400}}},
{status: 0, used: [16]deviceMemory{{bufferSize: 999}}},
},
}},
input: 0,
expected: uint64(400),
},
}

for _, tt := range tests {
Expand All @@ -227,8 +266,8 @@ func TestSpec_DeviceMemoryOffset(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{offset: 100}, {offset: 200}}},
{used: [16]deviceMemory{{offset: 300}, {offset: 400}}},
{status: 1, used: [16]deviceMemory{{offset: 100}, {offset: 200}}},
{status: 1, used: [16]deviceMemory{{offset: 300}, {offset: 400}}},
},
}},
input: 1,
Expand All @@ -240,8 +279,8 @@ func TestSpec_DeviceMemoryOffset(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{offset: 100}, {offset: 200}}},
{used: [16]deviceMemory{{offset: 300}, {offset: 400}}},
{status: 1, used: [16]deviceMemory{{offset: 100}, {offset: 200}}},
{status: 1, used: [16]deviceMemory{{offset: 300}, {offset: 400}}},
},
}},
input: 0,
Expand All @@ -253,13 +292,26 @@ func TestSpec_DeviceMemoryOffset(t *testing.T) {
num: 2,
procnum: 1,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{offset: 100}, {offset: 200}}},
{used: [16]deviceMemory{{offset: 300}, {offset: 400}}},
{status: 1, used: [16]deviceMemory{{offset: 100}, {offset: 200}}},
{status: 1, used: [16]deviceMemory{{offset: 300}, {offset: 400}}},
},
}},
input: 1,
expected: uint64(200),
},
{
name: "dead slot within procnum is excluded",
spec: &Spec{sr: &sharedRegionT{
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{status: 1, used: [16]deviceMemory{{offset: 100}}},
{status: 0, used: [16]deviceMemory{{offset: 999}}},
},
}},
input: 0,
expected: uint64(100),
},
}

for _, tt := range tests {
Expand All @@ -280,8 +332,8 @@ func TestSpec_DeviceMemoryTotal(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{total: 100}, {total: 200}}},
{used: [16]deviceMemory{{total: 300}, {total: 400}}},
{status: 1, used: [16]deviceMemory{{total: 100}, {total: 200}}},
{status: 1, used: [16]deviceMemory{{total: 300}, {total: 400}}},
},
}},
input: 1,
Expand All @@ -293,8 +345,8 @@ func TestSpec_DeviceMemoryTotal(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{total: 100}, {total: 200}}},
{used: [16]deviceMemory{{total: 300}, {total: 400}}},
{status: 1, used: [16]deviceMemory{{total: 100}, {total: 200}}},
{status: 1, used: [16]deviceMemory{{total: 300}, {total: 400}}},
},
}},
input: 0,
Expand All @@ -306,13 +358,26 @@ func TestSpec_DeviceMemoryTotal(t *testing.T) {
num: 2,
procnum: 1,
procs: [1024]shrregProcSlotT{
{used: [16]deviceMemory{{total: 100}, {total: 200}}},
{used: [16]deviceMemory{{total: 300}, {total: 400}}},
{status: 1, used: [16]deviceMemory{{total: 100}, {total: 200}}},
{status: 1, used: [16]deviceMemory{{total: 300}, {total: 400}}},
},
}},
input: 1,
expected: uint64(200),
},
{
name: "dead slot within procnum is excluded",
spec: &Spec{sr: &sharedRegionT{
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{status: 1, used: [16]deviceMemory{{total: 512}}},
{status: 0, used: [16]deviceMemory{{total: 999}}},
},
}},
input: 0,
expected: uint64(512),
},
}

for _, tt := range tests {
Expand All @@ -333,8 +398,8 @@ func TestSpec_DeviceSmUtil(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{deviceUtil: [16]deviceUtilization{{smUtil: 100}, {smUtil: 200}}},
{deviceUtil: [16]deviceUtilization{{smUtil: 300}, {smUtil: 400}}},
{status: 1, deviceUtil: [16]deviceUtilization{{smUtil: 100}, {smUtil: 200}}},
{status: 1, deviceUtil: [16]deviceUtilization{{smUtil: 300}, {smUtil: 400}}},
},
}},
input: 1,
Expand All @@ -346,8 +411,8 @@ func TestSpec_DeviceSmUtil(t *testing.T) {
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{deviceUtil: [16]deviceUtilization{{smUtil: 100}, {smUtil: 200}}},
{deviceUtil: [16]deviceUtilization{{smUtil: 300}, {smUtil: 400}}},
{status: 1, deviceUtil: [16]deviceUtilization{{smUtil: 100}, {smUtil: 200}}},
{status: 1, deviceUtil: [16]deviceUtilization{{smUtil: 300}, {smUtil: 400}}},
},
}},
input: 0,
Expand All @@ -359,13 +424,26 @@ func TestSpec_DeviceSmUtil(t *testing.T) {
num: 2,
procnum: 1,
procs: [1024]shrregProcSlotT{
{deviceUtil: [16]deviceUtilization{{smUtil: 100}, {smUtil: 200}}},
{deviceUtil: [16]deviceUtilization{{smUtil: 300}, {smUtil: 400}}},
{status: 1, deviceUtil: [16]deviceUtilization{{smUtil: 100}, {smUtil: 200}}},
{status: 1, deviceUtil: [16]deviceUtilization{{smUtil: 300}, {smUtil: 400}}},
},
}},
input: 1,
expected: uint64(200),
},
{
name: "dead slot within procnum is excluded",
spec: &Spec{sr: &sharedRegionT{
num: 2,
procnum: 2,
procs: [1024]shrregProcSlotT{
{status: 1, deviceUtil: [16]deviceUtilization{{smUtil: 60}}},
{status: 0, deviceUtil: [16]deviceUtilization{{smUtil: 999}}},
},
}},
input: 0,
expected: uint64(60),
},
}

for _, tt := range tests {
Expand Down Expand Up @@ -394,6 +472,7 @@ func TestSpec_CorruptProcnumIsClamped(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
sr := &sharedRegionT{num: 2, procnum: tt.procnum}
sr.procs[0].status = 1
sr.procs[0].used[0].total = 100
sr.procs[0].deviceUtil[0].smUtil = 100
s := Spec{sr: sr}
Expand Down
Loading
Loading