《树莓派实战秘籍》——1.20 技巧20使用Swap添加额外的内存

简介:

本节书摘来自异步社区《树莓派实战秘籍》一书中的第1章,第1.20节,作者: 【美】Ruth Suehle , Tom Callaway 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.20 技巧20使用Swap添加额外的内存

你的树莓派需要更多一点的内存吗?Swap可以让你交换磁盘空间和内存。

Linux长久以来就包含了swap的概念,其核心是在RAM和磁盘之间移动内存页的能力。在实际应用中,这种能力给操作系统提供了更多的可用内存(以磁盘空间的成本)。因为B型树莓派只有512MB内存,增加swap文件(或分区)以提高可用内存的想法很吸引人。

Swap的危害

在我们开始之前,你应该要了解一下这种方法的缺点。Swap的速度只是存储设备的写入速度,同时这也是一个高度写密集型操作。从实用的角度来看,这就是说,如果你增加了树莓派的SD卡中的交换空间,这将造成整体磁盘的性能显著下降,特别值得注意的是它还会缩短SD卡的寿命。

因为树莓派的整个操作系统都运行在SD卡上,我们强烈建议你不要将swap文件或分区放置在SD卡上。这些缺点也适用于连接到树莓派的USB闪存驱动器,因为它们也是基于闪存的存储设备,添加swap文件到USB闪存驱动器将造成同样的整体性能下降和寿命缩短。如果你真的想添加swap,最好是通过连接在SATA到USB转换器之间的一个实际的外部硬盘驱动器上来实现。
Raspbian预配置中通过dphys-swapfile文件启用了100MB swap文件。你可以通过编辑/etc/dphys-swapfile文件来修改此交换文件的设置,它只有一个选项:CONF_SWAPSIZE。如果你想增加交换文件的大小,可以把该值从100改为一个更大的值(取决于你的SD卡上的可用空间)。或者,你也可以通过将该值改为++0来禁止这个选项。

任何更改值都不会立刻生效,直到你运行如下命令:


44823473d758ad88e3e2d82667b5cb6be28bef97

Pidora在默认第一次启动时配置了512MB的swap(除非用户另有指定),这个文件位于/swap0目录下,并通过rootfs-resize服务在/etc/fstab中配置。

对于其他的Linux发行版(或者放置一个交换文件到一个不同的位置),你需要手工创建交换文件:


cfeb559c37b339c701e15a709bace07d316a4882

上述命令将在/path/to/swapfile位置生成一个1GB的swap文件(1024×1 M = 1 GB),你需要将这个位置改成你的交换文件的实际位置。要在启动后自动启用这个swap文件,可以在/etc/fstab文件中添加一个新行:


<a href=https://yqfile.alicdn.com/f40dac1d08a482db030ba24679406bd419f60c47.png" >

你可以在free命令的输出中看到更多的内存(作为swap):


a513adabd75f8c9f6de3c36c2c22f8f3bbd50971
相关文章
|
9月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
878 7
|
11月前
|
存储 监控 算法
JVM调优深度剖析:内存模型、垃圾收集、工具与实战
【10月更文挑战第9天】在Java开发领域,Java虚拟机(JVM)的性能调优是构建高性能、高并发系统不可或缺的一部分。作为一名资深架构师,深入理解JVM的内存模型、垃圾收集机制、调优工具及其实现原理,对于提升系统的整体性能和稳定性至关重要。本文将深入探讨这些内容,并提供针对单机几十万并发系统的JVM调优策略和Java代码示例。
170 2
|
NoSQL Java 测试技术
Golang内存分析工具gctrace和pprof实战
文章详细介绍了Golang的两个内存分析工具gctrace和pprof的使用方法,通过实例分析展示了如何通过gctrace跟踪GC的不同阶段耗时与内存量对比,以及如何使用pprof进行内存分析和调优。
339 0
Golang内存分析工具gctrace和pprof实战
|
NoSQL Redis
Redis性能优化问题之查看 Redis 进程是否发生内存 swap,如何解决
Redis性能优化问题之查看 Redis 进程是否发生内存 swap,如何解决
|
算法 Java Python
【Python 的内存管理机制专栏】Python 内存管理实战:性能优化与内存泄漏检测
【5月更文挑战第18天】Python内存管理关乎程序性能与稳定性。优化包括避免过多临时对象,如优化列表推导式减少对象创建。警惕循环引用造成的内存泄漏,如示例中的Node类。使用`gc`模块检测泄漏,通过`gc.set_debug(gc.DEBUG_LEAK)`和`gc.collect()`获取信息。实践中需持续分析内存使用,优化算法、数据结构和资源释放,以提升程序质量与效率。
145 9
【Python 的内存管理机制专栏】Python 内存管理实战:性能优化与内存泄漏检测
|
存储 安全 Java
SpringSecurity6从入门到实战之初始用户如何存储到内存
Spring Security 在 SpringBoot 应用中默认使用 `UserDetailsServiceAutoConfiguration` 类将用户信息存储到内存中。当classpath有`AuthenticationManager`、存在`ObjectPostProcessor`实例且无特定安全bean时,此配置生效。`inMemoryUserDetailsManager()`方法创建内存用户,通过`UserDetails`对象填充`InMemoryUserDetailsManager`的内部map。若要持久化到数据库,需自定义`UserDetailsService`接口实
|
算法 Java 开发者
Java面试题:Java内存探秘与多线程并发实战,Java内存模型及分区:理解Java堆、栈、方法区等内存区域的作用,垃圾收集机制:掌握常见的垃圾收集算法及其优缺点
Java面试题:Java内存探秘与多线程并发实战,Java内存模型及分区:理解Java堆、栈、方法区等内存区域的作用,垃圾收集机制:掌握常见的垃圾收集算法及其优缺点
102 0
|
安全 Java 调度
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
145 0
|
监控 Java 测试技术
JVM工作原理与实战(二十八):内存溢出和内存泄漏
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了内存溢出与内存泄漏、内存泄漏的常见场景、解决内存溢出的步骤等内容。
305 0
JVM工作原理与实战(二十八):内存溢出和内存泄漏
|
缓存 Linux Shell
Linux 内存管理与 Swap 空间扩展实践
该文介绍了Linux系统中`free`命令的使用,解析了其输出信息,包括物理内存(总内存、已用、空闲、缓存)和交换空间(总大小、使用和空闲)。Linux优先使用物理内存作缓存,当内存紧张时使用Swap空间。文章还提供了扩展Swap空间的步骤,并强调适度Swap使用对性能的影响,建议合理平衡物理内存和Swap的比例。

热门文章

最新文章