diff --git a/Makefile b/Makefile index c5cae3067..987c4113c 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,6 @@ TEST = \ ${GOPKG_PREFIX}/system/power_manager1 \ ${GOPKG_PREFIX}/system/resource_ctl \ ${GOPKG_PREFIX}/system/scheduler \ - ${GOPKG_PREFIX}/system/swapsched1 \ ${GOPKG_PREFIX}/system/systeminfo1 \ ${GOPKG_PREFIX}/system/timedate1 \ ${GOPKG_PREFIX}/system/uadp1 \ diff --git a/bin/dde-system-daemon/main.go b/bin/dde-system-daemon/main.go index 90a600c31..ca5b186dd 100644 --- a/bin/dde-system-daemon/main.go +++ b/bin/dde-system-daemon/main.go @@ -26,7 +26,6 @@ import ( _ "github.com/linuxdeepin/dde-daemon/system/power_manager1" _ "github.com/linuxdeepin/dde-daemon/system/resource_ctl" _ "github.com/linuxdeepin/dde-daemon/system/scheduler" - _ "github.com/linuxdeepin/dde-daemon/system/swapsched1" _ "github.com/linuxdeepin/dde-daemon/system/systeminfo1" _ "github.com/linuxdeepin/dde-daemon/system/timedate1" _ "github.com/linuxdeepin/dde-daemon/system/uadp1" diff --git a/misc/conf/org.deepin.dde.SwapSchedHelper1.conf b/misc/conf/org.deepin.dde.SwapSchedHelper1.conf deleted file mode 100644 index 001f798cb..000000000 --- a/misc/conf/org.deepin.dde.SwapSchedHelper1.conf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/misc/system-services/org.deepin.dde.SwapSchedHelper1.service b/misc/system-services/org.deepin.dde.SwapSchedHelper1.service deleted file mode 100644 index 37f5f8975..000000000 --- a/misc/system-services/org.deepin.dde.SwapSchedHelper1.service +++ /dev/null @@ -1,4 +0,0 @@ -[D-BUS Service] -Name=org.deepin.dde.SwapSchedHelper1 -Exec=/bin/false -SystemdService=dde-system-daemon.service diff --git a/misc/systemd/services/system/dde-system-daemon.service b/misc/systemd/services/system/dde-system-daemon.service index ef2c322f6..d2cf18272 100644 --- a/misc/systemd/services/system/dde-system-daemon.service +++ b/misc/systemd/services/system/dde-system-daemon.service @@ -25,7 +25,6 @@ ProtectSystem=strict # TODO 判断udev事件是否需要该配置 # ProtectKernelTunables=yes ProtectKernelModules=yes -# SwapSchedHelper需要设置cgroup # ProtectControlGroups=yes PrivateMounts=yes # 部分数据写在tmp,待整改tmp完成后考虑设置该项 @@ -99,8 +98,6 @@ ReadWritePaths=-/var/lib/dde-daemon/display/ # com.deepin.system.Power ReadWritePaths=-/var/lib/dde-daemon/power/ # ReadWritePaths=-/etc/tlp.d -# com.deepin.daemon.SwapSchedHelper -# 需要操作cgroup # com.deepin.daemon.PowerManager # 无读写文件 # com.deepin.daemon.Daemon diff --git a/rpm/dde-daemon.spec b/rpm/dde-daemon.spec index de4d6653d..a76fc63a8 100644 --- a/rpm/dde-daemon.spec +++ b/rpm/dde-daemon.spec @@ -97,7 +97,7 @@ sed -i 's|boot/grub|boot/grub2|' grub2/{grub2,grub_params,theme}.go pushd misc/system-services/ sed -i '$aSystemdService=deepin-accounts-daemon.service' org.deepin.dde.Power1.service \ org.deepin.dde.{Accounts,Apps,Daemon}1.service \ - org.deepin.dde.{Gesture,SwapSchedHelper,Timedated}1.service + org.deepin.dde.{Gesture,Timedated}1.service sed -i '$aSystemdService=dbus-org.deepin.dde.Lockservice1.service' org.deepin.dde.LockService1.service popd # systemd service diff --git a/system/swapsched1/exported_methods_auto.go b/system/swapsched1/exported_methods_auto.go deleted file mode 100644 index a247703e3..000000000 --- a/system/swapsched1/exported_methods_auto.go +++ /dev/null @@ -1,17 +0,0 @@ -// Code generated by "dbusutil-gen em -type Helper"; DO NOT EDIT. - -package swapsched - -import ( - "github.com/linuxdeepin/go-lib/dbusutil" -) - -func (v *Helper) GetExportedMethods() dbusutil.ExportedMethods { - return dbusutil.ExportedMethods{ - { - Name: "Prepare", - Fn: v.Prepare, - InArgs: []string{"sessionID"}, - }, - } -} diff --git a/system/swapsched1/swapsched.go b/system/swapsched1/swapsched.go deleted file mode 100644 index 3f97db370..000000000 --- a/system/swapsched1/swapsched.go +++ /dev/null @@ -1,195 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -package swapsched - -import ( - "errors" - "os" - "path/filepath" - "time" - - dbus "github.com/godbus/dbus/v5" - "github.com/linuxdeepin/dde-daemon/loader" - login1 "github.com/linuxdeepin/go-dbus-factory/system/org.freedesktop.login1" - "github.com/linuxdeepin/go-lib/cgroup" - "github.com/linuxdeepin/go-lib/dbusutil" - "github.com/linuxdeepin/go-lib/log" -) - -const ( - dbusServiceName = "org.deepin.dde.SwapSchedHelper1" - dbusPath = "/org/deepin/dde/SwapSchedHelper1" - dbusInterface = dbusServiceName -) - -var logger = log.NewLogger("daemon/system/swapsched") - -func init() { - loader.Register(newDaemon(logger)) -} - -type Daemon struct { - *loader.ModuleBase - sessionWatcher *Helper -} - -func newDaemon(logger *log.Logger) *Daemon { - daemon := new(Daemon) - daemon.ModuleBase = loader.NewModuleBase("swapsched", daemon, logger) - return daemon -} - -func (d *Daemon) GetDependencies() []string { - return []string{} -} - -func (d *Daemon) Start() error { - err := cgroup.Init() - if err != nil { - return err - } - - logger.Debug("swap sched helper start") - sw, err := newHelper() - if err != nil { - return err - } - - sw.init() - d.sessionWatcher = sw - - service := loader.GetService() - err = service.Export(dbusPath, sw) - if err != nil { - return err - } - - err = service.RequestName(dbusServiceName) - if err != nil { - return err - } - - return nil -} - -func (d *Daemon) Stop() error { - // TODO: - return nil -} - -//go:generate dbusutil-gen em -type Helper - -type Helper struct { - loginManager login1.Manager - sysSigLoop *dbusutil.SignalLoop -} - -func (*Helper) GetInterfaceName() string { - return dbusInterface -} - -func newHelper() (*Helper, error) { - systemBus, err := dbus.SystemBus() - if err != nil { - return nil, err - } - sysSigLoop := dbusutil.NewSignalLoop(systemBus, 10) - sysSigLoop.Start() - loginManager := login1.NewManager(systemBus) - return &Helper{ - loginManager: loginManager, - sysSigLoop: sysSigLoop, - }, nil -} - -func (sw *Helper) Prepare(sessionID string) *dbus.Error { - uid, err := sw.getSessionUid(sessionID) - if err != nil { - return dbusutil.ToError(err) - } - - err = createDDECGroups(uid, sessionID) - if err != nil { - logger.Warning("failed to create cgroup:", err) - return dbusutil.ToError(err) - } - - return nil -} - -func (sw *Helper) getSessionUid(sessionID string) (uint32, error) { - sessions, err := sw.loginManager.ListSessions(0) - if err != nil { - return 0, err - } - - for _, session := range sessions { - if session.SessionId == sessionID { - return session.UID, nil - } - } - - return 0, errors.New("not found session") -} - -func (sw *Helper) init() { - sw.loginManager.InitSignalExt(sw.sysSigLoop, true) - _, err := sw.loginManager.ConnectSessionRemoved( - func(sessionID string, sessionPath dbus.ObjectPath) { - logger.Debug("session removed", sessionID, sessionPath) - memMountPoint := cgroup.GetSubSysMountPoint(cgroup.Memory) - _, err := os.Stat(filepath.Join(memMountPoint, sessionID+"@dde")) - if err == nil { - // path exit - go func() { - time.Sleep(10 * time.Second) - err := deleteDDECGroups(sessionID) - if err != nil { - logger.Warning("failed to delete DDE cgroups:", err) - } - }() - } - }) - - if err != nil { - logger.Warning(err) - } -} - -func createDDECGroups(uid uint32, sessionID string) error { - dir := sessionID + "@dde/" - err := createCGroup(uid, dir+"uiapps") - if err != nil { - return err - } - - err = createCGroup(uid, dir+"DE") - if err != nil { - return err - } - return nil -} - -func createCGroup(uid uint32, name string) error { - cg := newCgroup(name) - uid0 := int(uid) - cg.SetUidGid(uid0, uid0, uid0, uid0) - logger.Debugf("create cgroup %s, uid: %d", name, uid) - return cg.Create(false) -} - -func deleteDDECGroups(sessionID string) error { - logger.Debugf("delete cgroup for session %s", sessionID) - cg := newCgroup(sessionID + "@dde") - return cg.Delete(cgroup.DeleteFlagRecursive) -} - -func newCgroup(name string) *cgroup.Cgroup { - cg := cgroup.NewCgroup(name) - cg.AddController(cgroup.Memory) - cg.AddController(cgroup.Freezer) - cg.AddController(cgroup.Blkio) - return cg -}