"git.curoverse.com/arvados.git/services/datamanager/keep"
"log"
"os"
+ "runtime"
"time"
)
flag.StringVar(&logEventType,
"log-event-type",
"experimental-data-manager-report",
- "event_type to use in our arvados log entries.")
+ "event_type to use in our arvados log entries. Set to empty to turn off logging")
flag.IntVar(&logFrequencySeconds,
"log-frequency-seconds",
20,
log.Fatalf("Current user is not an admin. Datamanager can only be run by admins.")
}
- arvLogger := logger.NewLogger(logger.LoggerParams{Client: arv,
- EventType: logEventType,
- MinimumWriteInterval: time.Second * time.Duration(logFrequencySeconds)})
+ var arvLogger *logger.Logger
+ if logEventType != "" {
+ arvLogger = logger.NewLogger(logger.LoggerParams{Client: arv,
+ EventType: logEventType,
+ MinimumWriteInterval: time.Second * time.Duration(logFrequencySeconds)})
+ }
- {
+ if arvLogger != nil {
properties, _ := arvLogger.Edit()
- properties["start_time"] = time.Now()
- properties["args"] = os.Args
+ runInfo := make(map[string]interface{})
+ runInfo["start_time"] = time.Now()
+ runInfo["args"] = os.Args
hostname, err := os.Hostname()
if err != nil {
- properties["hostname_error"] = err.Error()
+ runInfo["hostname_error"] = err.Error()
} else {
- properties["hostname"] = hostname
+ runInfo["hostname"] = hostname
}
+ runInfo["pid"] = os.Getpid()
+ properties["run_info"] = runInfo
+
+ arvLogger.AddEditHook(LogMemoryAlloc)
+
+ arvLogger.Record()
}
- arvLogger.Record()
// TODO(misha): Read Collections and Keep Contents concurrently as goroutines.
// This requires waiting on them to finish before you let main() exit.
RunCollections(collection.GetCollectionsParams{
- Client: arv, Logger: arvLogger, BatchSize: 500})
+ Client: arv, Logger: arvLogger, BatchSize: 100})
RunKeep(keep.GetKeepServersParams{Client: arv, Limit: 1000})
}
}
return
}
+
+func LogMemoryAlloc(properties map[string]interface{}, entry map[string]interface{}) {
+ _ = entry // keep the compiler from complaining
+ runInfo := properties["run_info"].(map[string]interface{})
+ var memStats runtime.MemStats
+ runtime.ReadMemStats(&memStats)
+ runInfo["alloc_bytes_in_use"] = memStats.Alloc
+}