V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
feimeizhan
V2EX  ›  分享创造

macos 先知型耗电监控软件

  •  1
     
  •   feimeizhan · 2022-08-03 17:54:27 +08:00 · 1620 次点击
    这是一个创建于 644 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    在 mac 笔记本上偶尔会出现某个程序 cpu 占用率超高的(比较常见就是自带的邮件),如果没有装相关的监控软件,就没办法得知,电池就被白白的浪费掉。不过就算装了监控软件,也没有那个是可以设置监控单位时间内耗电量达到阈值警报的功能,只能设置电量到达多少然后告警,这样没法满足我的需求。所以我自己就搞了个软件dmonitor,可以像先知一样知道电池未来耗电趋势。

    功能

    1. 监控单位时间窗口内(默认 5 分钟内),如果程序耗电多就通知栏提示
    2. 耗电过多程序能在顶部菜单里的选项显示,悬浮可看到执行程序路径,点击可杀死程序
    3. 可配置开机启动
    4. 可配置监控单位时间
    5. 静默功能,可设置静默一段时间,然后自动重新监控,适合编译场景
    6. 只有一个菜单界面,从顶部菜单栏的perference呼出。

    原理 /实现

    1. 界面使用electron.js
    2. 业务功能使用 [pidusage]( https://www.npmjs.com/package/@reply2future/pidusage) 获得 cpu 占用率,目前只使用 cpu 占用率作为标准

    兼容性

    目前只支持 macos ,手头上有monterey 12.5版本的 macbook 平稳运行一个月,发现了除mail之外,还有其他adprivacydspotlight的检索器等等偶尔高 CPU 的程序。

    题外话

    监控耗电量?目前 5 秒采集数据,耗电量理论上来说很低,从日常使用的感官上没什么差别。另外,如果有类似的程序也欢迎评论。

    更多

    项目地址: https://github.com/reply2future/dmonitor 欢迎 star 和 contribute 。

    5 条回复    2022-08-04 12:11:26 +08:00
    feimeizhan
        1
    feimeizhan  
    OP
       2022-08-03 18:11:43 +08:00
    想要尝试使用的,可以在 repo 的 release 下载,上面版本除了开始第一个,都是用 github action 自动打包的。
    RheatiN
        2
    RheatiN  
       2022-08-04 09:08:32 +08:00
    这点需求用 electron 也太重了吧- -,原生自带接口,写个菜单栏的程序,估计几百 K 宝子- -
    feimeizhan
        3
    feimeizhan  
    OP
       2022-08-04 09:19:15 +08:00
    @RheatiN 我目前的技术栈最快实现的方式是这个;原生自带接口的意思是直接提供查询 CPU 的接口?
    RheatiN
        4
    RheatiN  
       2022-08-04 10:35:01 +08:00
    @feimeizhan 当然有,不然系统信息那些怎么获取的,看了下,sdk 里有 usr/include/mach ,里面有不少相关的头文件
    feimeizhan
        5
    feimeizhan  
    OP
       2022-08-04 12:11:26 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1056 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:13 · PVG 06:13 · LAX 15:13 · JFK 18:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.