@@ -749,6 +749,65 @@ func (cg *CGroup) SetCPUCfsLimit(limitPeriod int64, limitQuota int64) error {
749
749
return ErrUnknownVersion
750
750
}
751
751
752
+ // GetCPUCfsLimit gets the quota and duration in ms for each scheduling period.
753
+ func (cg * CGroup ) GetCPUCfsLimit () (int64 , int64 , error ) {
754
+ version := cgControllers ["cpu" ]
755
+ switch version {
756
+ case Unavailable :
757
+ return - 1 , - 1 , ErrControllerMissing
758
+ case V1 :
759
+ limitQuotaStr , err := cg .rw .Get (version , "cpu" , "cpu.cfs_quota_us" )
760
+ if err != nil {
761
+ return - 1 , - 1 , err
762
+ }
763
+
764
+ limitQuota , err := strconv .ParseInt (limitQuotaStr , 10 , 64 )
765
+ if err != nil {
766
+ return - 1 , - 1 , err
767
+ }
768
+
769
+ limitPeriodStr , err := cg .rw .Get (version , "cpu" , "cpu.cfs_period_us" )
770
+ if err != nil {
771
+ return - 1 , - 1 , err
772
+ }
773
+
774
+ limitPeriod , err := strconv .ParseInt (limitPeriodStr , 10 , 64 )
775
+ if err != nil {
776
+ return - 1 , - 1 , err
777
+ }
778
+
779
+ return limitPeriod , limitQuota , nil
780
+ case V2 :
781
+ cpuMax , err := cg .rw .Get (version , "cpu" , "cpu.max" )
782
+ if err != nil {
783
+ return - 1 , - 1 , err
784
+ }
785
+
786
+ cpuMaxFields := strings .Split (cpuMax , " " )
787
+ if len (cpuMaxFields ) != 2 {
788
+ return - 1 , - 1 , errors .New ("Couldn't parse CFS limits" )
789
+ }
790
+
791
+ if cpuMaxFields [0 ] == "max" {
792
+ return - 1 , - 1 , nil
793
+ }
794
+
795
+ limitQuota , err := strconv .ParseInt (cpuMaxFields [0 ], 10 , 64 )
796
+ if err != nil {
797
+ return - 1 , - 1 , err
798
+ }
799
+
800
+ limitPeriod , err := strconv .ParseInt (cpuMaxFields [1 ], 10 , 64 )
801
+ if err != nil {
802
+ return - 1 , - 1 , err
803
+ }
804
+
805
+ return limitPeriod , limitQuota , nil
806
+ }
807
+
808
+ return - 1 , - 1 , ErrUnknownVersion
809
+ }
810
+
752
811
// SetHugepagesLimit applies a limit to the number of processes.
753
812
func (cg * CGroup ) SetHugepagesLimit (pageType string , limit int64 ) error {
754
813
version := cgControllers ["hugetlb" ]
0 commit comments