MacOS 控制固态磁盘写入量,设置定时任务监控

这篇具有很好参考价值的文章主要介绍了MacOS 控制固态磁盘写入量,设置定时任务监控。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

M1 芯片的内存交换策略非常激进,导致 内存较小的机型 固态硬盘写入量十分恐怖,网上很多人都有类似的遭遇。

如何看待 8G 256G M1 MacBook Air 使用一个月硬盘写入 22TB+?

而固态硬盘是有擦除、写入寿命的,一般就按100次算,256G 大概就是 250TB。当然,并不是说超过这个数,硬盘就坏了,只是一般超过这个数,再坏,厂商就不包了。具体不同型号、不同厂商也会给不同的 TBW (Total Bytes Written)

查询磁盘写入量

  1. 安装磁盘工具smartmontools:
brew install smartmontools
smartctl -a disk0

Data Units Written 就是磁盘写入量,10个月左右的写入量 39 T

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        34 Celsius
Available Spare:                    100%
Available Spare Threshold:          99%
Percentage Used:                    2%
Data Units Read:                    127,486,481 [65.2 TB]
Data Units Written:                 76,316,904 [39.0 TB]
Host Read Commands:                 1,790,447,762
Host Write Commands:                694,652,609
Controller Busy Time:               0
Power Cycles:                       197
Power On Hours:                     934
Unsafe Shutdowns:                   8
Media and Data Integrity Errors:    0
Error Information Log Entries:      0

设置定时任务监控磁盘写入量

写一个 python 脚本 smart-daily.py,放在合适的位置,log 的目录,自己看着改。

chmod+x smart-daily.py 添加执行权限。第一行不能删,否则不能直接 smart-daily.py 执行。

#!/usr/bin/env python
import os
import time
import re

command_result = os.popen("smartctl -a disk0").read()
lines = command_result.splitlines()

for line in lines:
    if line.find("Data Units Written") != -1:
        # print(line)
        start_index = re.search(r"\d", line).start()
        line = line[start_index:]
        with open('DataWritten.log', mode='a', encoding='utf-8') as f:
            f.write(time.strftime("%Y-%m-%d %H:%M:%S: ",
                    time.localtime()) + line + "\n")

定时任务的设置参考:mac 定时执行python脚本

如何减少磁盘写入量?

根本的办法是加钱买更大内存,此外,以下几种方法

注意保护

实测一段时间,上面的方法都一般,无法根治这个问题,我也是买之前没做足功课,入手了丐版 8+256 Macbook,日常就是用用 Edge,IDEA,Pycharm,不到一年时间固态写了将近40T。

只能自己没事多留心,别同时开太多吃内存的软件,用不到的软件就 Command+Q 。

外接固态

外接一个固态硬盘,下载的东西都直接存入固态中,但对正常用户来说,这并不是磁盘写入量的罪魁祸首。

减小 WindowServer 内存占用

占用过多mac内存的WindowServer是什么

关闭虚拟内存

即使关闭了虚拟内存,也不会影响系统稳定性,因为超过阈值又会继续使用虚拟内存,其实效果并不是很好,开个 IDEA 内存就飚起来了。但关闭后就可以在没必要的情况下不去使用虚拟内存。

M1关闭虚拟内存(交换内存 swap memory) 防止SSD磨损

关闭 Spotlight 索引

https://www.v2ex.com/t/874851

但直接关闭索引对正常使用太影响了,比较折中的办法是设置一个 crontab 定时任务,每天允许 Spotlight 索引一个小时。文章来源地址https://www.toymoban.com/news/detail-732249.html

Disable spotlight indexing on macOS to heavily speed up Virtual Instances.
# massively increase virtualized macOS by disabling spotlight.
sudo mdutil -i off -a

# since you can't use spotlight to find apps, you can renable with
# sudo mdutil -i on -a

到了这里,关于MacOS 控制固态磁盘写入量,设置定时任务监控的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins 设置定时任务

    1、点击任务后,点击配置 2、选择”构建触发器“下面的”定时构建“,并设定定时规则。设置完成后,构建任务就会按照我们设置的时间定时执行了。 3、设定规则         此处定时任务的格式遵循 cron 的语法(可以与 cron 的语法有轻微的差异)。具体格式,每行包含

    2024年02月16日
    浏览(82)
  • centos设置定时任务

    可以 cron 工具在 CentOS 中设置定时任务。 打开终端窗口并以管理员身份登录。 输入以下命令安装 cron : 使用以下命令启动 cron 服务: 如果您希望 cron 服务开机自启动,请使用以下命令: 使用以下命令检查 cron 服务是否正在运行: 输入以下命令来编辑 cron : 在编辑器中添加

    2024年02月10日
    浏览(34)
  • linux设置定时任务

    在Linux系统中设置定时任务通常使用的是Cron服务。以下是创建和管理定时任务的基本步骤: 打开crontab文件编辑器 : 使用命令行工具编辑用户级别的cron任务列表: 添加定时任务 : 在编辑器中,按照特定格式定义你的定时任务。每一行代表一个单独的任务,其格式如下:  

    2024年01月20日
    浏览(46)
  • Linux 设置定时任务

    🎈 作者: Linux猿 🎈 简介: CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬 本篇文章主要介绍在 Linux 环境下如何设置定时任务。  本文使用 CentOS 7.9 进行

    2024年02月15日
    浏览(38)
  • JAVA 定时任务@Scheduled设置

    例1:每隔5秒执行一次:*/5 * * * * ? 例2:每隔5分执行一次:0 */5 * * * ? 在26分、29分、33分执行一次:0 26,29,33 * * * ? 例3:每天半夜12点30分执行一次:0 30 0 * * ? (注意日期域为0不是24) 每天凌晨1点执行一次:0 0 1 * * ? 每天上午10:15执行一次: 0 15 10 ? * * 或 0 15 10 * * ? 或 0 15

    2023年04月16日
    浏览(53)
  • Spring Boot动态设置定时任务

            spring boot项目实现定时任务,最简单的一种就是基于注解 @Schedule 的方式,在启动类上添加 @EnableScheduling 注解进行标注,就可实现。但是,这个方式有个缺点,那就是执行周期写死在代码里,无法动态改变,想要改变只能修改代码再重新部署启动。为了能够动态的

    2024年02月08日
    浏览(46)
  • 在linux系统中如何设置定时任务

    前言: 在linux日常运维过程中我们常常需要在指定时间段自动停止或启动某个服务我们不可能人为的手动去执行,这时候我们就可以给对应的任务设置一个定时。后面我就可以将周期性的、规则的工作交给定时任务去完成。 **一次性任务:**顾名思义就是该任务只执行一次,

    2024年02月10日
    浏览(48)
  • flask python 设置定时任务 flask 周期性执行任务方案

    flask 通常使用 flask_apscheduler 框架设计定时任务,flask_apscheduler 功能很全面,能按设定的时间规则执行任务,可以持久化到各类数据库(mysql,redis,mongodb),实现对定时任务增、删、改、查等操作。 方法三:通过调用 flask_apscheduler 的 api (推荐) 实例对象 scheduler 拥有增、删

    2024年01月21日
    浏览(42)
  • 部署问题集合(二十二)Linux设置定时任务,并设置系统时间

    因为项目中经常用到定时任务,特此总结记录一下 大部分虚拟机创建后就自带定时服务,直接用命令就好 编辑定时任务: crontab -e ,在该文件下添加如下内容 开机自启: @reboot /home/autoRun.sh 定时执行: 0 0 * * * /home/sutoRun.sh (凌晨十二点执行) 时间后也可以接命令 若要在该

    2024年02月11日
    浏览(40)
  • Linux学习笔记-Ubuntu下使用Crontab设置定时任务

    白衣沽酒绮罗生 百代繁华一朝都,谁非过客;千秋明月吹角寒,花是主人。 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο

    2024年02月04日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包