add cached kic system info

pull/8718/head
Medya Gh 2020-07-14 13:40:13 -07:00
parent 03e9cb7909
commit 41a1ba52e6
1 changed files with 14 additions and 3 deletions

View File

@ -70,6 +70,7 @@ var (
insecureRegistry []string
apiServerNames []string
apiServerIPs []net.IP
kicSysInfo *oci.SysInfo
)
func init() {
@ -752,12 +753,11 @@ func memoryLimits(drvName string) (int, int, error) {
containerLimit := 0
if driver.IsKIC(drvName) {
s, err := oci.DaemonInfo(drvName)
s, err := cachedKicSystemInfo(drvName)
if err != nil {
return -1, -1, err
}
containerLimit = int(s.TotalMemory / 1024 / 1024)
myabeAdviceDockerResources(containerLimit, sysLimit, s.CPUs, drvName)
}
return sysLimit, containerLimit, nil
@ -885,8 +885,8 @@ func validateFlags(cmd *cobra.Command, drvName string) {
}
}
validateMemorySize()
if cmd.Flags().Changed(memory) {
validateMemorySize()
if !driver.HasResourceLimits(drvName) {
out.WarningT("The '{{.name}}' driver does not respect the --memory flag", out.V{"name": drvName})
}
@ -1132,3 +1132,14 @@ func getKubernetesVersion(old *config.ClusterConfig) string {
return version.VersionPrefix + nvs.String()
}
// cachedKicSystemInfo will return docker/podman info. it will call docker/podam info only once per minikube start to avoid perforamce side effects
func cachedKicSystemInfo(ociBin string) (oci.SysInfo, error) {
var err error
if kicSysInfo == nil {
si, err := oci.DaemonInfo(ociBin)
kicSysInfo = &si
return *kicSysInfo, err
}
return *kicSysInfo, err
}