- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在用 Rust 编写一个工具,它需要根据当前文件系统是 SSD 还是传统硬盘驱动器来改变其功能。
运行时的区别在于,如果文件存在于 SSD 上,与 HDD 相比,将使用更多线程来访问文件,这只会破坏磁盘并降低性能。
我主要对 Linux 感兴趣,因为这是我的用例,但欢迎添加任何其他内容。如果可能的话,我还需要以非 root 用户身份执行此操作。是否有系统调用或文件系统设备可以告诉我我在使用哪种设备?
最佳答案
归功于 @Hackerman :
$ cat /sys/block/sda/queue/rotational
0
如果它返回 1,则给定的文件系统在旋转媒体上。
我已经将这个概念充实到一个 shell 脚本中,它可以可靠地确定一个文件是否在旋转媒体上:
#!/bin/bash
set -e
# emits the device path to the filesystem where the first argument lives
fs_mount="$(df -h $1 | tail -n 1 | awk '{print $1;}')"
# if it's a symlink, resolve it
if [ -L "$fs_mount" ]; then
fs_mount="$(readlink -f $fs_mount)"
fi
# if it's a device-mapper like LVM or dm-crypt, then we need to be special
if echo $fs_mount | grep -oP '/dev/dm-\d+' >/dev/null ; then
# get the first device slave
first_slave_dev="$(find /sys/block/$(basename $fs_mount)/slaves -mindepth 1 -maxdepth 1 -exec readlink -f {} \; | head -1)"
# actual device
dev="$(cd $first_slave_dev/../ && basename $(pwd))"
else
dev="$(basename $fs_mount | grep -ioP '[a-z]+(?=\d+\b)')"
fi
# now that we have the actual device, we simply ask whether it's rotational or not
if [[ $(cat /sys/block/$dev/queue/rotational) -eq 0 ]]; then
echo "The filesystem hosting $1 is not on an rotational media."
else
echo "The filesystem hosting $1 is on rotational media."
fi
以上对我来说既适用于普通分区(即 /dev/sda1
挂载在给定路径),也适用于 dm-crypt
分区(即 /dev/mapper/crypt
安装在给定路径)。我没有用 LVM 测试它,因为我附近没有。
对于 Bash 的不可移植性表示歉意。
关于linux - 确定是否在 SSD 上的跨平台方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41229644/
我希望 Kubernetes 在我的 Google Kubernetes 引擎集群中使用本地 SSD,而不使用 alpha 功能。有办法做到这一点吗? 预先感谢您的任何建议或帮助。 最佳答案 http
我已经阅读了论文 MobileNetV2(arXiv:1801.04381) 并从 Tensorflow model zoo 运行模型. 我注意到 SSD Lite MobileNetV2 的推理
Kafka 速度很快,因为它在 HDD 上使用顺序写入技术。 如果我为 Kafka Brokers 使用 SSD,我能获得更快的性能吗? 据我所知,SSD 的工作方式与 HDD 不同。而且我认为使用
大多数 SQL 关系数据库都支持表中聚集索引的概念。聚簇索引通常作为 B 树实现,表示给定表中的实际记录,按磁盘/存储上的索引物理排序。这种特殊的聚簇索引的一个优点是,在遍历 B 树搜索一条记录或一组
目录 c:\test 里面有 50 个左右的文件,没有子目录。 If IO.Directory.Exists("C:\test") Then IO.Directory.Dele
我准备发布一个只对普通硬盘有效的工具,而不是 SSD(固态硬盘)。事实上,它不应该与 SSD 一起使用,因为它会导致大量读/写而没有实际效果。 任何人都知道检测给定驱动器是否为固态的方法? 最佳答案
鉴于固态硬盘 (SSD) 的价格正在下降,并且很快将作为系统驱动器变得更加普遍,并且鉴于它们的访问率明显高于旋转磁介质,哪些标准算法将通过使用用于本地存储的 SSD?例如,SSD 的高随机读取速度使得
SSD 现在很普遍; Amazon EBS 由 SSD 支持,因此大多数云数据库现在也运行在 SSD 上(Heroku PostgreSQL 等)。传统上,数据库和相关架构的设计理念是随机访问不好 -
为什么选择Windows 单击部署后,Vultr云业务流程将接管并在所需的数据中心中旋转实例。 Windows支持的云服务器 Windows Serv
来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Exploring the Benefit of Activation Sparsity in Pre-training
我已经用自定义数据集(电池)训练了 SSD Mobilenet 模型。下面给出了电池的示例图像,并附上了我用来训练模型的配置文件。 当物体靠近摄像头时(用网络摄像头测试),它以超过 的概率准确检测到物
我有一个应用程序,它每秒通过网络接收数百个字符串,大约 50 个字节长。我想将这些缓存到 SSD 以进行进一步处理。如果我每秒执行数百 ~50 字节的文件附加写入,SSD 是否安全?我怀疑操作系统可能
我需要创建一个 T 卷,T 已创建,但如果磁盘是 ssd,我还需要一个新的 U 卷,我该怎么做? 知道我是否是 SSD 的批处理命令是什么? [...] set /a VOL_SIZE= %MINSI
我想在自定义数据集上训练 Mobilenet SSD 模型。 我研究了重新训练模型的工作流程,并注意到配置文件中的 image_resizer{} 块: https://github.com/tens
我已经在 tensorflow 中尝试了 SSD 和 YOLO 实现。现在我想为我自己的数据集重新训练其中任何一个,比如交通信号。如何从 pascal voc 中重新训练 SSD 数据?有人可以帮忙吗
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 2 年前。 已锁定。这个问题
我正在开发一个应用程序,其中有大量数据不断写入 ram,我试图从 ram 中快速读取数据,并将其写入 NVMe SSD,写入完成后,我重新排队 ram允许它被写入的空间。 我目前的问题是数据无限期地连
Closed. This question is off-topic. It is not currently accepting answers. Learn more。 想改进这个问题吗?Upda
我确定的是: 我在 Linux 上使用 Java/Eclipse,并尝试在磁盘上分别存储大量 16/32 字节的键/值对。 key 是完全随机的,由 SecureRandom 生成。 速度恒定在约 5
我正在用 Rust 编写一个工具,它需要根据当前文件系统是 SSD 还是传统硬盘驱动器来改变其功能。 运行时的区别在于,如果文件存在于 SSD 上,与 HDD 相比,将使用更多线程来访问文件,这只会破
我是一名优秀的程序员,十分优秀!