From b1e1c3ebbfff381df190af19bca1d851fa9539a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sun, 21 Apr 2024 23:04:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=97=B6=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=A4=84=E4=BA=8E=E7=A9=BA=E9=97=B2=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=86=B3=E5=AE=9A=E6=98=AF=E5=90=A6=E6=89=A7=E8=A1=8C?= =?UTF-8?q?fstrim?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/nodes/task_trim_disks.go | 10 ++++++---- internal/utils/idles/run.go | 6 ++++++ internal/utils/idles/run_test.go | 4 ++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/internal/nodes/task_trim_disks.go b/internal/nodes/task_trim_disks.go index 4b3b671..31550a3 100644 --- a/internal/nodes/task_trim_disks.go +++ b/internal/nodes/task_trim_disks.go @@ -24,15 +24,17 @@ func NewTrimDisksTask() *TrimDisksTask { // Start the task func (this *TrimDisksTask) Start() { // execute once - err := this.loop() - if err != nil { - remotelogs.Warn("TRIM_DISKS", "trim disks failed: "+err.Error()) + if idles.IsMinHour() { + err := this.loop() + if err != nil { + remotelogs.Warn("TRIM_DISKS", "trim disks failed: "+err.Error()) + } } var ticker = time.NewTicker(2 * 24 * time.Hour) // every 2 days idles.RunTicker(ticker, func() { // run the task - err = this.loop() + err := this.loop() if err != nil { remotelogs.Warn("TRIM_DISKS", "trim disks failed: "+err.Error()) } diff --git a/internal/utils/idles/run.go b/internal/utils/idles/run.go index 0f65bfd..ef0635c 100644 --- a/internal/utils/idles/run.go +++ b/internal/utils/idles/run.go @@ -11,6 +11,7 @@ import ( "github.com/shirou/gopsutil/v3/load" "math" "os" + "slices" "sort" "time" ) @@ -124,6 +125,11 @@ func RunTicker(ticker *time.Ticker, f func()) { } } +func IsMinHour() bool { + var minLoadHours = sharedMinLoadHours // copy + return len(minLoadHours) > 0 && slices.Contains(minLoadHours, time.Now().Hour()) +} + func calculateMinLoadHours() { var allLoads = []*HourlyLoad{} for _, v := range hourlyLoadMap { diff --git a/internal/utils/idles/run_test.go b/internal/utils/idles/run_test.go index 8aeae47..100f4f2 100644 --- a/internal/utils/idles/run_test.go +++ b/internal/utils/idles/run_test.go @@ -44,3 +44,7 @@ func TestRunTicker(t *testing.T) { t.Log(timeutil.Format("H:i:s"), "run once") }) } + +func TestIsMinHour(t *testing.T) { + t.Log(idles.IsMinHour()) +}