Linux SSD上交换分区的背景丢弃

Linux SSD上交换分区的背景丢弃,第1张

概述问题 我想在Linux上的SSD磁盘中的交换分区上启用后台TRIM *** 作.根据几篇文章,例如this one,内核检测到此配置并自动执行丢弃 *** 作,但在我的测试中似乎它无法正常工作,尽管使用“discard”挂载选项来强制执行此 *** 作. 脚本 > Debian Wheezy运行Linux 3.2.0 > SSD磁盘:1 x 120GB OCZ Vertex 3 MI > 2GB交换“普通”分区,没有其他 问题

我想在Linux上的SSD磁盘中的交换分区上启用后台TRIM *** 作.根据几篇文章,例如this one,内核检测到此配置并自动执行丢弃 *** 作,但在我的测试中似乎它无法正常工作,尽管使用“discard”挂载选项来强制执行此 *** 作.

脚本

> Debian Wheezy运行linux 3.2.0
> SSD磁盘:1 x 120GB OCZ Vertex 3 MI
> 2GB交换“普通”分区,没有其他层(LVM,RAID等)

背景

以下是检查后台TRIM是否在交换分区上运行的步骤:

> TRIM支持:检查SSD磁盘是否支持TRIM命令,内核将设备标记为非旋转:

# hdparm -I /dev/sda | grep TRIM * Data Set Management TRIM supported (limit 1 block) * Deterministic read data after TRIM# cat /sys/block/sda/queue/rotational0

>交换填充:挂载分区,清理所有VM缓存并配置linux以积极交换将vm.swappiness设置为100.然后,运行分配所有可用内存的脚本并强制内核开始交换:

# swapon [--discard] /dev/sda2# echo 3 > /proc/sys/vm/drop_caches# echo 100 > /proc/sys/vm/swappiness# ./fill-up-memory.up

该脚本运行一个具有32GB物理内存2GB交换分区的服务器,并在内存中创建一个~33.8GB的对象,这足以填满所有内存并开始交换.这是实现此行为的脚本示例:

#!/usr/bin/pythonmem = 33.8testing = 'A' * int(1024 * 1024 * 1024 * mem)raw_input()

>检查交换内容:“swapon -s”表示使用了100%的交换内存.使用“hdparm –read-sector”我检查交换分区扇区的原始内容,所有字节都设置为“4141”,相应的“A”字符的十六进制表示法,一切都按预期工作.这是一个示例脚本,用于逐扇区读取交换分区的内容:

#!/bin/bashfor sector in `seq 194560 4100095` ; do    hdparm --read-sector $sector /dev/sdadone

注意:您可以使用parted,cfdi​​sk等获取交换分区的开始/结束扇区.

当我停止脚本时它释放所有内存,包括交换分配,“swapon -s”在系统中不返回交换使用.此时,预计linux开始在后台丢弃交换分区的内容,但它不起作用,扇区的内容仍然是“4141”,甚至几个小时后.

我做了几次测试,看起来linux只在使用swapon()系统调用启用分区时执行完全丢弃,但从不在后台执行,尽管在/ etc / fstab上启用了“discard”挂载选项.

进一步研究:blkdev_issue_discard()是负责向底层SSD设备发送TRIM命令的内核函数,mm / swapfile.c上有两个对此函数的唯一引用:

> discard_swap()在swapon()过程中调用它,如果启用“discard”挂载选项,它会丢弃所有内容,这可以按预期工作.
> discard_swap_cluster()它应该丢弃集群交换的内容,但似乎它从不执行TRIM命令.

问题:linux在交换SSD设备上的预期行为是什么?它应该丢弃所有空闲扇区/页面,或者仅在启动过程中启用分区时发出初始完全丢弃?谢谢.

解决方法 似乎discard_swap_cluster仅从scan_swap_map调用,而scan_swap_map又从get_swap_page或get_swap_page_of_type调用.因此,如果我是正确的,丢弃只发生在将要分配新的交换页面时,而不是在页面被释放时. 总结

以上是内存溢出为你收集整理的Linux SSD上交换分区的背景丢弃全部内容,希望文章能够帮你解决Linux SSD上交换分区的背景丢弃所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1045114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存