47
47
referencedReadInterval = flag .Duration ("referenced_read_interval" , time .Duration (0 ), "Read interval for referenced bytes (container_referenced_bytes metric), number of seconds after which referenced bytes are read, if set to 0 referenced bytes are never read (default: 0s)" )
48
48
49
49
smapsFilePathPattern = "/proc/%d/smaps"
50
- smaps_rollupFilePattern = "/proc/%d/smaps_rollup"
50
+ smapsRollupFilePattern = "/proc/%d/smaps_rollup"
51
51
clearRefsFilePathPattern = "/proc/%d/clear_refs"
52
52
53
53
referencedRegexp = regexp .MustCompile (`Referenced:\s*([0-9]+)\s*kB` )
@@ -375,7 +375,7 @@ func getReferencedKBytes(pids []int) (uint64, error) {
375
375
foundMatch := false
376
376
smapsFilePath := ""
377
377
for _ , pid := range pids {
378
- smapsFilePath = fmt .Sprintf (smaps_rollupFilePattern , pid )
378
+ smapsFilePath = fmt .Sprintf (smapsRollupFilePattern , pid )
379
379
if _ , err := os .Stat (smapsFilePath ); err == nil {
380
380
klog .V (6 ).Infof ("Using smaps_rollup for pid %d instead of smaps" , pid )
381
381
} else {
@@ -757,10 +757,10 @@ func (h *Handler) GetProcesses() ([]int, error) {
757
757
}
758
758
759
759
// ResetWss to be run as gorutine for non blocking referenced bytes reset
760
- func (h * Handler ) ResetWss (containerName string ) error {
761
- var err error = nil
760
+ func (h * Handler ) ResetWss (containerName string ) {
761
+
762
762
if * referencedResetInterval == time .Duration (0 ) {
763
- return err
763
+ return
764
764
}
765
765
castResetInterval := * referencedResetInterval
766
766
time .Sleep (time .Duration (rand .Intn (int (castResetInterval .Seconds ()))))
@@ -769,8 +769,7 @@ func (h *Handler) ResetWss(containerName string) error {
769
769
select {
770
770
case <- h .ReferencedResetStopper :
771
771
klog .V (5 ).Infof ("Finished reseting wss for %s" , containerName )
772
- return err
773
-
772
+ return
774
773
default :
775
774
pids , err := h .cgroupManager .GetPids ()
776
775
if err != nil {
@@ -783,7 +782,10 @@ func (h *Handler) ResetWss(containerName string) error {
783
782
}
784
783
start := time .Now ()
785
784
h .referencedMemoryMutex .Lock ()
786
- clearReferencedBytes (pids )
785
+ err = clearReferencedBytes (pids )
786
+ if err != nil {
787
+ klog .Warningf ("Failed clearing referenced bytes for %s" , containerName )
788
+ }
787
789
h .referencedMemoryMutex .Unlock ()
788
790
elapsed := time .Since (start )
789
791
if elapsed > * referencedResetInterval {
@@ -797,19 +799,18 @@ func (h *Handler) ResetWss(containerName string) error {
797
799
}
798
800
799
801
// ReadSmaps to be run as gorutine for non blocking referenced bytes read
800
- func (h * Handler ) ReadSmaps (containerName string ) error {
801
- var err error = nil
802
+ func (h * Handler ) ReadSmaps (containerName string ) {
802
803
klog .V (5 ).Infof ("Starting WSS collection for %s" , containerName )
803
804
if * referencedReadInterval == 0 {
804
- return err
805
+ return
805
806
}
806
807
castReadInterval := * referencedReadInterval
807
808
time .Sleep (time .Duration (rand .Intn (int (castReadInterval .Seconds ()))))
808
809
for {
809
810
select {
810
811
case <- h .ReferencedMemoryStopper :
811
812
klog .V (5 ).Infof ("Finished collecting wss for %s" , containerName )
812
- return err
813
+ return
813
814
814
815
default :
815
816
pids , err := h .cgroupManager .GetPids ()
@@ -824,6 +825,9 @@ func (h *Handler) ReadSmaps(containerName string) error {
824
825
h .referencedMemoryMutex .Lock ()
825
826
h .referencedMemory , err = getReferencedKBytes (pids )
826
827
h .referencedMemoryMutex .Unlock ()
828
+ if err != nil {
829
+ klog .Warningf ("Failed to get referenced bytes for %s" , containerName )
830
+ }
827
831
elapsed := time .Since (start )
828
832
if elapsed > * referencedReadInterval {
829
833
klog .Warningf ("Exceeded referenced read interval for %s" , containerName )
0 commit comments