Skip to content

Commit fa679ab

Browse files
author
zhiyuan.zhou
committed
Support process shared memory monitoring
* Upgrade procfs from v0.14.0 to v0.17.0 to support shared memory collection for processes. * Implement process shared memory monitoring logic. Signed-off-by: zhiyuan.zhou <[email protected]>
1 parent e52ab0a commit fa679ab

File tree

9 files changed

+66
-43
lines changed

9 files changed

+66
-43
lines changed

collector/process_collector.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,8 @@ func (p *NamedProcessCollector) scrape(ch chan<- prometheus.Metric) {
269269
prometheus.GaugeValue, float64(gcounts.Memory.VirtualBytes), gname, "virtual")
270270
ch <- prometheus.MustNewConstMetric(membytesDesc,
271271
prometheus.GaugeValue, float64(gcounts.Memory.VmSwapBytes), gname, "swapped")
272+
ch <- prometheus.MustNewConstMetric(membytesDesc,
273+
prometheus.GaugeValue, float64(gcounts.Memory.SHRBytes), gname, "shared")
272274
ch <- prometheus.MustNewConstMetric(startTimeDesc,
273275
prometheus.GaugeValue, float64(gcounts.OldestStartTime.Unix()), gname)
274276
ch <- prometheus.MustNewConstMetric(openFDsDesc,

fixtures/14804/statm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0 0 1995 0 0 0 0

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ go 1.23.0
55
toolchain go1.23.8
66

77
require (
8-
github.com/google/go-cmp v0.6.0
8+
github.com/google/go-cmp v0.7.0
99
github.com/ncabatoff/fakescraper v0.0.0-20201102132415-4b37ba603d65
1010
github.com/ncabatoff/go-seq v0.0.0-20180805175032-b08ef85ed833
1111
github.com/prometheus/client_golang v1.19.0
1212
github.com/prometheus/common v0.52.3
1313
github.com/prometheus/exporter-toolkit v0.11.0
14-
github.com/prometheus/procfs v0.14.0
14+
github.com/prometheus/procfs v0.17.0
1515
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
1616
gopkg.in/yaml.v2 v2.4.0
1717
)
@@ -33,8 +33,8 @@ require (
3333
golang.org/x/crypto v0.35.0 // indirect
3434
golang.org/x/net v0.36.0 // indirect
3535
golang.org/x/oauth2 v0.18.0 // indirect
36-
golang.org/x/sync v0.11.0 // indirect
37-
golang.org/x/sys v0.30.0 // indirect
36+
golang.org/x/sync v0.15.0 // indirect
37+
golang.org/x/sys v0.33.0 // indirect
3838
golang.org/x/text v0.22.0 // indirect
3939
google.golang.org/appengine v1.6.7 // indirect
4040
google.golang.org/protobuf v1.33.0 // indirect

go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
1717
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
1818
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
1919
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
20-
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
21-
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
20+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
21+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
2222
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
2323
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
2424
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
@@ -45,8 +45,8 @@ github.com/prometheus/common v0.52.3 h1:5f8uj6ZwHSscOGNdIQg6OiZv/ybiK2CO2q2drVZA
4545
github.com/prometheus/common v0.52.3/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
4646
github.com/prometheus/exporter-toolkit v0.11.0 h1:yNTsuZ0aNCNFQ3aFTD2uhPOvr4iD7fdBvKPAEGkNf+g=
4747
github.com/prometheus/exporter-toolkit v0.11.0/go.mod h1:BVnENhnNecpwoTLiABx7mrPB/OLRIgN74qlQbV+FK1Q=
48-
github.com/prometheus/procfs v0.14.0 h1:Lw4VdGGoKEZilJsayHf0B+9YgLGREba2C6xr+Fdfq6s=
49-
github.com/prometheus/procfs v0.14.0/go.mod h1:XL+Iwz8k8ZabyZfMFHPiilCniixqQarAy5Mu67pHlNQ=
48+
github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0=
49+
github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
5050
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
5151
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
5252
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
@@ -60,11 +60,11 @@ golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
6060
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
6161
golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
6262
golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
63-
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
64-
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
63+
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
64+
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
6565
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
66-
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
67-
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
66+
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
67+
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
6868
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
6969
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
7070
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=

proc/grouper.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ func groupadd(grp Group, ts Update) Group {
6868
grp.Memory.ResidentBytes += ts.Memory.ResidentBytes
6969
grp.Memory.VirtualBytes += ts.Memory.VirtualBytes
7070
grp.Memory.VmSwapBytes += ts.Memory.VmSwapBytes
71+
grp.Memory.SHRBytes += ts.Memory.SHRBytes
7172
grp.Memory.ProportionalBytes += ts.Memory.ProportionalBytes
7273
grp.Memory.ProportionalSwapBytes += ts.Memory.ProportionalSwapBytes
7374
if ts.Filedesc.Open != -1 {

proc/grouper_test.go

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -45,30 +45,30 @@ func TestGrouperBasic(t *testing.T) {
4545
}{
4646
{
4747
[]IDInfo{
48-
piinfost(p1, n1, Counts{1, 2, 3, 4, 5, 6, 0, 0}, Memory{7, 8, 0, 0, 0},
48+
piinfost(p1, n1, Counts{1, 2, 3, 4, 5, 6, 0, 0}, Memory{7, 8, 0, 0, 0, 1},
4949
Filedesc{4, 400}, 2, States{Other: 1}),
50-
piinfost(p2, n2, Counts{2, 3, 4, 5, 6, 7, 0, 0}, Memory{8, 9, 0, 0, 0},
50+
piinfost(p2, n2, Counts{2, 3, 4, 5, 6, 7, 0, 0}, Memory{8, 9, 0, 0, 0, 1},
5151
Filedesc{40, 400}, 3, States{Waiting: 1}),
5252
},
5353
GroupByName{
54-
"g1": Group{Counts{}, States{Other: 1}, msi{}, 1, Memory{7, 8, 0, 0, 0}, starttime,
54+
"g1": Group{Counts{}, States{Other: 1}, msi{}, 1, Memory{7, 8, 0, 0, 0, 1}, starttime,
5555
4, 0.01, 2, nil},
56-
"g2": Group{Counts{}, States{Waiting: 1}, msi{}, 1, Memory{8, 9, 0, 0, 0}, starttime,
56+
"g2": Group{Counts{}, States{Waiting: 1}, msi{}, 1, Memory{8, 9, 0, 0, 0, 1}, starttime,
5757
40, 0.1, 3, nil},
5858
},
5959
},
6060
{
6161
[]IDInfo{
6262
piinfost(p1, n1, Counts{2, 3, 4, 5, 6, 7, 0, 0},
63-
Memory{6, 7, 0, 0, 0}, Filedesc{100, 400}, 4, States{Zombie: 1}),
63+
Memory{6, 7, 0, 0, 0, 1}, Filedesc{100, 400}, 4, States{Zombie: 1}),
6464
piinfost(p2, n2, Counts{4, 5, 6, 7, 8, 9, 0, 0},
65-
Memory{9, 8, 0, 0, 0}, Filedesc{400, 400}, 2, States{Running: 1}),
65+
Memory{9, 8, 0, 0, 0, 1}, Filedesc{400, 400}, 2, States{Running: 1}),
6666
},
6767
GroupByName{
6868
"g1": Group{Counts{1, 1, 1, 1, 1, 1, 0, 0}, States{Zombie: 1}, msi{}, 1,
69-
Memory{6, 7, 0, 0, 0}, starttime, 100, 0.25, 4, nil},
69+
Memory{6, 7, 0, 0, 0, 1}, starttime, 100, 0.25, 4, nil},
7070
"g2": Group{Counts{2, 2, 2, 2, 2, 2, 0, 0}, States{Running: 1}, msi{}, 1,
71-
Memory{9, 8, 0, 0, 0}, starttime, 400, 1, 2, nil},
71+
Memory{9, 8, 0, 0, 0, 1}, starttime, 400, 1, 2, nil},
7272
},
7373
},
7474
}
@@ -95,35 +95,35 @@ func TestGrouperProcJoin(t *testing.T) {
9595
}{
9696
{
9797
[]IDInfo{
98-
piinfo(p1, n1, Counts{1, 2, 3, 4, 5, 6, 0, 0}, Memory{3, 4, 0, 0, 0}, Filedesc{4, 400}, 2),
98+
piinfo(p1, n1, Counts{1, 2, 3, 4, 5, 6, 0, 0}, Memory{3, 4, 0, 0, 0, 1}, Filedesc{4, 400}, 2),
9999
},
100100
GroupByName{
101-
"g1": Group{Counts{}, States{}, msi{}, 1, Memory{3, 4, 0, 0, 0}, starttime, 4, 0.01, 2, nil},
101+
"g1": Group{Counts{}, States{}, msi{}, 1, Memory{3, 4, 0, 0, 0, 1}, starttime, 4, 0.01, 2, nil},
102102
},
103103
}, {
104104
// The counts for pid2 won't be factored into the total yet because we only add
105105
// to counts starting with the second time we see a proc. Memory and FDs are
106106
// affected though.
107107
[]IDInfo{
108108
piinfost(p1, n1, Counts{3, 4, 5, 6, 7, 8, 0, 0},
109-
Memory{3, 4, 0, 0, 0}, Filedesc{4, 400}, 2, States{Running: 1}),
109+
Memory{3, 4, 0, 0, 0, 1}, Filedesc{4, 400}, 2, States{Running: 1}),
110110
piinfost(p2, n2, Counts{1, 1, 1, 1, 1, 1, 0, 0},
111-
Memory{1, 2, 0, 0, 0}, Filedesc{40, 400}, 3, States{Sleeping: 1}),
111+
Memory{1, 2, 0, 0, 0, 1}, Filedesc{40, 400}, 3, States{Sleeping: 1}),
112112
},
113113
GroupByName{
114114
"g1": Group{Counts{2, 2, 2, 2, 2, 2, 0, 0}, States{Running: 1, Sleeping: 1}, msi{}, 2,
115-
Memory{4, 6, 0, 0, 0}, starttime, 44, 0.1, 5, nil},
115+
Memory{4, 6, 0, 0, 0, 2}, starttime, 44, 0.1, 5, nil},
116116
},
117117
}, {
118118
[]IDInfo{
119119
piinfost(p1, n1, Counts{4, 5, 6, 7, 8, 9, 0, 0},
120-
Memory{1, 5, 0, 0, 0}, Filedesc{4, 400}, 2, States{Running: 1}),
120+
Memory{1, 5, 0, 0, 0, 1}, Filedesc{4, 400}, 2, States{Running: 1}),
121121
piinfost(p2, n2, Counts{2, 2, 2, 2, 2, 2, 0, 0},
122-
Memory{2, 4, 0, 0, 0}, Filedesc{40, 400}, 3, States{Running: 1}),
122+
Memory{2, 4, 0, 0, 0, 1}, Filedesc{40, 400}, 3, States{Running: 1}),
123123
},
124124
GroupByName{
125125
"g1": Group{Counts{4, 4, 4, 4, 4, 4, 0, 0}, States{Running: 2}, msi{}, 2,
126-
Memory{3, 9, 0, 0, 0}, starttime, 44, 0.1, 5, nil},
126+
Memory{3, 9, 0, 0, 0, 2}, starttime, 44, 0.1, 5, nil},
127127
},
128128
},
129129
}
@@ -150,18 +150,18 @@ func TestGrouperNonDecreasing(t *testing.T) {
150150
}{
151151
{
152152
[]IDInfo{
153-
piinfo(p1, n1, Counts{3, 4, 5, 6, 7, 8, 0, 0}, Memory{3, 4, 0, 0, 0}, Filedesc{4, 400}, 2),
154-
piinfo(p2, n2, Counts{1, 1, 1, 1, 1, 1, 0, 0}, Memory{1, 2, 0, 0, 0}, Filedesc{40, 400}, 3),
153+
piinfo(p1, n1, Counts{3, 4, 5, 6, 7, 8, 0, 0}, Memory{3, 4, 0, 0, 0, 1}, Filedesc{4, 400}, 2),
154+
piinfo(p2, n2, Counts{1, 1, 1, 1, 1, 1, 0, 0}, Memory{1, 2, 0, 0, 0, 1}, Filedesc{40, 400}, 3),
155155
},
156156
GroupByName{
157-
"g1": Group{Counts{}, States{}, msi{}, 2, Memory{4, 6, 0, 0, 0}, starttime, 44, 0.1, 5, nil},
157+
"g1": Group{Counts{}, States{}, msi{}, 2, Memory{4, 6, 0, 0, 0, 2}, starttime, 44, 0.1, 5, nil},
158158
},
159159
}, {
160160
[]IDInfo{
161-
piinfo(p1, n1, Counts{4, 5, 6, 7, 8, 9, 0, 0}, Memory{1, 5, 0, 0, 0}, Filedesc{4, 400}, 2),
161+
piinfo(p1, n1, Counts{4, 5, 6, 7, 8, 9, 0, 0}, Memory{1, 5, 0, 0, 0, 1}, Filedesc{4, 400}, 2),
162162
},
163163
GroupByName{
164-
"g1": Group{Counts{1, 1, 1, 1, 1, 1, 0, 0}, States{}, msi{}, 1, Memory{1, 5, 0, 0, 0}, starttime, 4, 0.01, 2, nil},
164+
"g1": Group{Counts{1, 1, 1, 1, 1, 1, 0, 0}, States{}, msi{}, 1, Memory{1, 5, 0, 0, 0, 1}, starttime, 4, 0.01, 2, nil},
165165
},
166166
}, {
167167
[]IDInfo{},
@@ -193,19 +193,19 @@ func TestGrouperRemoveEmptyGroups(t *testing.T) {
193193
}{
194194
{
195195
[]IDInfo{
196-
piinfo(p1, n1, Counts{3, 4, 5, 6, 7, 8, 0, 0}, Memory{3, 4, 0, 0, 0}, Filedesc{4, 400}, 2),
197-
piinfo(p2, n2, Counts{1, 1, 1, 1, 1, 1, 0, 0}, Memory{1, 2, 0, 0, 0}, Filedesc{40, 400}, 3),
196+
piinfo(p1, n1, Counts{3, 4, 5, 6, 7, 8, 0, 0}, Memory{3, 4, 0, 0, 0, 1}, Filedesc{4, 400}, 2),
197+
piinfo(p2, n2, Counts{1, 1, 1, 1, 1, 1, 0, 0}, Memory{1, 2, 0, 0, 0, 1}, Filedesc{40, 400}, 3),
198198
},
199199
GroupByName{
200-
n1: Group{Counts{}, States{}, msi{}, 1, Memory{3, 4, 0, 0, 0}, starttime, 4, 0.01, 2, nil},
201-
n2: Group{Counts{}, States{}, msi{}, 1, Memory{1, 2, 0, 0, 0}, starttime, 40, 0.1, 3, nil},
200+
n1: Group{Counts{}, States{}, msi{}, 1, Memory{3, 4, 0, 0, 0, 1}, starttime, 4, 0.01, 2, nil},
201+
n2: Group{Counts{}, States{}, msi{}, 1, Memory{1, 2, 0, 0, 0, 1}, starttime, 40, 0.1, 3, nil},
202202
},
203203
}, {
204204
[]IDInfo{
205-
piinfo(p1, n1, Counts{4, 5, 6, 7, 8, 9, 0, 0}, Memory{1, 5, 0, 0, 0}, Filedesc{4, 400}, 2),
205+
piinfo(p1, n1, Counts{4, 5, 6, 7, 8, 9, 0, 0}, Memory{1, 5, 0, 0, 0, 1}, Filedesc{4, 400}, 2),
206206
},
207207
GroupByName{
208-
n1: Group{Counts{1, 1, 1, 1, 1, 1, 0, 0}, States{}, msi{}, 1, Memory{1, 5, 0, 0, 0}, starttime, 4, 0.01, 2, nil},
208+
n1: Group{Counts{1, 1, 1, 1, 1, 1, 0, 0}, States{}, msi{}, 1, Memory{1, 5, 0, 0, 0, 1}, starttime, 4, 0.01, 2, nil},
209209
},
210210
}, {
211211
[]IDInfo{},

proc/read.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ type (
5555
VmSwapBytes uint64
5656
ProportionalBytes uint64
5757
ProportionalSwapBytes uint64
58+
SHRBytes uint64
5859
}
5960

6061
// Filedesc describes a proc's file descriptor usage and soft limit.
@@ -134,6 +135,7 @@ type (
134135
procfs.Proc
135136
procid *ID
136137
stat *procfs.ProcStat
138+
statm *procfs.ProcStatm
137139
status *procfs.ProcStatus
138140
cmdline []string
139141
cgroups []procfs.Cgroup
@@ -289,6 +291,18 @@ func (p *proccache) getStat() (procfs.ProcStat, error) {
289291
return *p.stat, nil
290292
}
291293

294+
func (p *proccache) getStatm() (procfs.ProcStatm, error) {
295+
if p.statm == nil {
296+
statm, err := p.Proc.NewStatm()
297+
if err != nil {
298+
return procfs.ProcStatm{}, err
299+
}
300+
p.statm = &statm
301+
}
302+
303+
return *p.statm, nil
304+
}
305+
292306
func (p *proccache) getStatus() (procfs.ProcStatus, error) {
293307
if p.status == nil {
294308
status, err := p.Proc.NewStatus()
@@ -478,6 +492,9 @@ func (p proc) GetMetrics() (Metrics, int, error) {
478492
// won't see the effect of the caching between calls.
479493
stat, _ := p.getStat()
480494

495+
// Used for getting shared memory of process
496+
statm, _ := p.getStatm()
497+
481498
// Ditto for states
482499
states, _ := p.GetStates()
483500

@@ -504,6 +521,7 @@ func (p proc) GetMetrics() (Metrics, int, error) {
504521
ResidentBytes: uint64(stat.ResidentMemory()),
505522
VirtualBytes: uint64(stat.VirtualMemory()),
506523
VmSwapBytes: uint64(status.VmSwap),
524+
SHRBytes: uint64(statm.SHRBytes()),
507525
}
508526

509527
if p.proccache.fs.GatherSMaps {

proc/read_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ func TestReadFixture(t *testing.T) {
8787
ResidentBytes: 0x7b1000,
8888
VirtualBytes: 0x1061000,
8989
VmSwapBytes: 0x2800,
90+
SHRBytes: 0x7cb000,
9091
},
9192
Filedesc: Filedesc{
9293
Open: 5,

proc/tracker_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,15 +99,15 @@ func TestTrackerMetrics(t *testing.T) {
9999
want Update
100100
}{
101101
{
102-
piinfost(p, n, Counts{1, 2, 3, 4, 5, 6, 0, 0}, Memory{7, 8, 0, 0, 0},
102+
piinfost(p, n, Counts{1, 2, 3, 4, 5, 6, 0, 0}, Memory{7, 8, 0, 0, 0, 1},
103103
Filedesc{1, 10}, 9, States{Sleeping: 1}),
104-
Update{n, Delta{}, Memory{7, 8, 0, 0, 0}, Filedesc{1, 10}, tm,
104+
Update{n, Delta{}, Memory{7, 8, 0, 0, 0, 1}, Filedesc{1, 10}, tm,
105105
9, States{Sleeping: 1}, msi{}, nil},
106106
},
107107
{
108-
piinfost(p, n, Counts{2, 3, 4, 5, 6, 7, 0, 0}, Memory{1, 2, 0, 0, 0},
108+
piinfost(p, n, Counts{2, 3, 4, 5, 6, 7, 0, 0}, Memory{1, 2, 0, 0, 0, 1},
109109
Filedesc{2, 20}, 1, States{Running: 1}),
110-
Update{n, Delta{1, 1, 1, 1, 1, 1, 0, 0}, Memory{1, 2, 0, 0, 0},
110+
Update{n, Delta{1, 1, 1, 1, 1, 1, 0, 0}, Memory{1, 2, 0, 0, 0, 1},
111111
Filedesc{2, 20}, tm, 1, States{Running: 1}, msi{}, nil},
112112
},
113113
}

0 commit comments

Comments
 (0)