AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1287243
Accepted
Thomas Browne
Thomas Browne
Asked: 2020-10-27 15:08:11 +0800 CST2020-10-27 15:08:11 +0800 CST 2020-10-27 15:08:11 +0800 CST

如何用交换文件替换 zram swap?

  • 772

我正在运行带有 Jetpack 4.4 的 Jetson Nano(Ubuntu 18.04),默认情况下,有 4x495 Meg ZRAM 分区用于交换空间。问题是,对于一个数据科学项目,我需要比 Jetson 上安装的 4gig 更多的 RAM(以及我从压缩 ZRAM 中得到的任何东西——不多)。所以我想制作一个 8gb 的交换文件而不是 ZRAM 交换。

在此处输入图像描述

如何完全禁用 ZRAM 交换以便创建交换文件?

我试过了

sudo apt remove --purge zram-config
sudo dpkg --purge zrawmswap-enabler
sudo dpkg --purge zram-config
sudo service zramswap stop

但这些都不起作用。ZRAM 交换仍然在重新启动时启用: 在此处输入图像描述

或者,我可以只创建一个磁盘交换文件并期望它替换 ZRAM 吗?

swap zram
  • 1 1 个回答
  • 3902 Views

1 个回答

  • Voted
  1. Best Answer
    Carles Mateo
    2020-10-30T09:07:38+08:002020-10-30T09:07:38+08:00

    使用 zram,您可以在 RAM 中进行交换并进行压缩。每当您的系统交换时,它都会非常快地完成,RAM 也是如此。

    您无需停止 zram 即可替换为另一个交换。您可以添加更多交换,并让系统处理它。

    如果你想改变zram的配置比例编辑:/etc/systemd/nvzramconfig.sh

    为了在磁盘上创建新的交换,您有两种选择:

    • 为交换创建一个分区,专用
    • 在驱动器中创建一个文件并将其用于交换。

    如果您期望从交换到内存有很多移动,反之亦然:

    • 您可以在 Jet Nano 中使用 16 GB eMMC 5.1,但它很快就会死掉。当系统内存不足时,它们不会像交换那样用于重写。速度也会很慢。
    • 您可以使用 USB 3.0 接口连接外部驱动器
    • 如果你使用SSD,写很多可能会导致SSD过早死亡你可以使用SAS SSD企业级,但我认为这对于成本低的计算机来说太过分了,无论如何速度都会限制在速度USB 3.0 端口。
    • 如果您使用 HDD,交换将非常慢。在这两种情况下,您都会受到 USB 3.0 速度的限制

    对于您所评论的内容,我相信您会运行该科学程序几次,最多可以说100次,因此即使强烈使用交换,对于国产SSD来说也应该没有问题。您也可以使用外部外壳连接 NVMe,但您不会看到高速,因为速度限制在 USB 3.0 中。三星 PRO 系列在死前提供双倍的写入。

    注意使用3.0而不是意外使用2.0。

    如果您需要使用该科学程序,您可以组装一台具有 16 GB 或 32 GB RAM 的廉价 PC,而您根本不需要交换。

    2020 年 11 月 4 日更新:在 JetPack-4.4 中,nvzramconfig 是一个 Systemd 服务,因此在/etc/systemd/system中有一个名为 nvzramconfig.service 的文件

    #
    # Copyright (c) 2019, NVIDIA CORPORATION.  All rights reserved.
    #
    
    [Unit]
    Description=ZRAM configuration
    ; Everything depends on the NVIDIA per-boot script
    After=nv.service
    ; TPC power gating must be enabled before anything touching gpu
    After=nvpmodel.service
    
    [Service]
    Type=simple
    ExecStart=/etc/systemd/nvzramconfig.sh
    
    [Install]
    WantedBy=multi-user.target
    

    您可以通过禁用它来完全阻止此服务启动:

    sudo systemctl disable nvzramconfig
    

    这是首选的方法。但是,如果出于某种原因您不想禁用该服务,那么不太好的选择就是像这样评论文件/etc/systemd/nvzramconfig.sh中的每一行:

    #!/bin/bash
    #
    # Copyright (c) 2019, NVIDIA CORPORATION.  All rights reserved.
    #
    
    # NRDEVICES=$(grep -c ^processor /proc/cpuinfo | sed 's/^0$/1/')
    # if modinfo zram | grep -q ' zram_num_devices:' 2>/dev/null; then
    #   MODPROBE_ARGS="zram_num_devices=${NRDEVICES}"
    # elif modinfo zram | grep -q ' num_devices:' 2>/dev/null; then
    #   MODPROBE_ARGS="num_devices=${NRDEVICES}"
    # else
    #   exit 1
    # fi
    # modprobe zram "${MODPROBE_ARGS}"
    
    # Calculate memory to use for zram (1/2 of ram)
    # totalmem=`LC_ALL=C free | grep -e "^Mem:" | sed -e 's/^Mem: *//' -e 's/  *.*//'`
    # mem=$((("${totalmem}" / 2 / "${NRDEVICES}") * 1024))
    
    # initialize the devices
    # for i in $(seq "${NRDEVICES}"); do
    #   DEVNUMBER=$((i - 1))
    #   echo "${mem}" > /sys/block/zram"${DEVNUMBER}"/disksize
    #   mkswap /dev/zram"${DEVNUMBER}"
    #   swapon -p 5 /dev/zram"${DEVNUMBER}"
    # done
    

    只要执行以错误级别 0 退出(因此没有错误或没有不同于 0 的退出代码),它将被视为工作。

    这两种方式都不会加载内核模块(modprobe zram)。

    干杯

    • 3

相关问题

  • 交换分区的重要性

  • 交换分区是否加密?

  • 从交换文件休眠和恢复

  • 我应该使我的交换分区有多大?

  • 如果有空闲 RAM,如何清空交换?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve