首先,我发现了一个类似的问题,但它并没有真正解决我的问题。我试图发现我正在使用的设备的 USB 总线是否是我程序中的瓶颈。
如何监控 USB 总线(类似于 gnome-system-monitor 的工作方式)以显示总线利用率?基本上我想确定总线何时被“最大化”。我想我正在寻找的是 usbmon 的一些接口,因为它看起来可以满足我的需求。
这来自于测试 USRP 和 GNU Radio。我遇到了 USB 总线可能是一个限制因素的情况,所以我问了一个更普遍的 USB 性能监控问题。
上周五,我将我的 Ubuntu 服务器升级到 11.10,它现在使用 3.0.0-12-server 内核运行。从那以后,整体性能急剧下降。升级前系统负载约为 0.3,但目前在具有 16GB RAM(10GB 空闲,未使用交换)的 8 核 CPU 系统上为 22-30。
我要责怪 BTRFS 文件系统驱动程序和底层 MD 阵列,因为 [md1_raid1] 和 [btrfs-transacti] 消耗了大量资源。但是所有的 [kworker/*:*] 消耗更多。
sar 自周五以来,一直在输出类似的东西:
11:25:01 CPU %user %nice %system %iowait %steal %idle
11:35:01 all 1,55 0,00 70,98 8,99 0,00 18,48
11:45:01 all 1,51 0,00 68,29 10,67 0,00 19,53
11:55:01 all 1,40 0,00 65,52 13,53 0,00 19,55
12:05:01 all 0,95 0,00 66,23 10,73 0,00 22,10
Run Code Online (Sandbox Code Playgroud)
并iostat确认写入率非常低:
sda 129,26 3059,12 614,31 258226022 51855269
sdb 98,78 24,28 …Run Code Online (Sandbox Code Playgroud) 问:是否有支持对 LVM2 逻辑卷进行碎片整理的工具?(使它们的范围成为一致的序列)
最好通过定义所需的范围顺序(类似于“磁盘开头的分区 A,A 之后的 B,PV 结尾的 X”)
当然,必须考虑以下情况:
是否可以剥离分区,可以讨论。
诀窍:可以使用 移动范围的范围pvmove,例如 : pvmove --alloc anywhere /dev/sdb1:1000-1999 /dev/sdb1:0-999。
原因:因为手动移动多个范围pvmove是完全可重复的事情(是否无脑值得怀疑),我很好奇是否存在用于自动化/支持此过程的工具。如果没有......也许我自己做一个 - 你认为这样的工具对其他人有用吗?
到现在为止,cat奖的无用使用已经众所周知,并且还提到了无用使用echo(与此问题无关)。我想知道是否应该有一个“无用的echoBash 奖”:根据一些非常不科学的测量,管道似乎比 heredocs 和 herestrings 慢得多:
继承人:
for reps in 1 2 3
do
time for i in {1..1000}
do
cat <<'END'
test string
END
done > /dev/null
done
real 0m1.786s
user 0m0.212s
sys 0m0.332s
real 0m1.817s
user 0m0.232s
sys 0m0.332s
real 0m1.846s
user 0m0.256s
sys 0m0.320s
Run Code Online (Sandbox Code Playgroud)字符串
for reps in 1 2 3
do
time for i in {1..1000}
do
cat <<< 'test string'
done > /dev/null
done …Run Code Online (Sandbox Code Playgroud)或者是shutdown -h now它可以得到的最快的?
我寻找一些 syscall 或类似的东西,它们将允许跳过在关闭之前完成的大量工作(特别是关心正在运行的过程)。
充其量我想要一个与内核相关的解决方案,对init-middleware(如systemd或upstart)一无所知。
与即直接杀死所有服务(如cups/apache/pulseaudio 等)相关的风险......我不在乎......
备注:解决方案应该是软件副。在设备上按下按钮不是我想要的。
我一直不明白为什么高磁盘 I/O 会如此减慢系统速度。这对我来说很奇怪,因为我预计减速只会影响那些依赖于硬盘/光驱数据的进程,但减速甚至会影响加载到 RAM 上的内容。我在这里指的是iowait。
为什么处理器要等待,而不是做其他工作?谁能解释这个限制以及为什么它没有在 Linux 内核中解决?有没有没有这个问题的内核?
我试图比较在千兆以太网中连接的两台主机之间的几种网络安全协议的性能。
我的目标是看看我是否可以使带宽饱和,如果不能,限制因素是什么。
所以我的问题是:为什么 IPsec 不能达到更高的带宽?
两台主机运行 Debian Wheezy 和 Strongswan 以获取 IPsec。
在查找与 的匹配项时grep,我经常注意到后续搜索所需的时间明显少于第一次——例如 25 秒与 2 秒。显然,它不是通过重用上次运行的数据结构——那些应该已经被释放的。在 上运行time命令grep,我注意到一个有趣的现象:
real 24m36.561s
user 1m20.080s
sys 0m7.230s
Run Code Online (Sandbox Code Playgroud)
剩下的时间去哪儿了?有什么我可以做的让它每次都跑得快吗?(例如,在grep搜索文件之前让另一个进程读取文件。)
为什么 wc 实用程序这么慢?
当我在一个大文件上运行它时,它比 md5sum 需要大约 20 倍的时间:
MyDesktop:/tmp$ dd if=/dev/zero bs=1024k count=1024 of=/tmp/bigfile
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.687094 s, 1.6 GB/s
MyDesktop:/tmp$ time wc /tmp/bigfile
0 0 1073741824 /tmp/bigfile
real 0m45.969s
user 0m45.424s
sys 0m0.424s
MyDesktop:/tmp$ time md5sum /tmp/bigfile
cd573cfaace07e7949bc0c46028904ff /tmp/bigfile
real 0m2.520s
user 0m2.196s
sys 0m0.316s
Run Code Online (Sandbox Code Playgroud)
这不仅仅是由文件充满空值导致的奇怪边缘条件,即使文件充满随机数据或者是文本文件,我也看到了相同的性能差异。
(这是在 Ubuntu 13.04,64 位上)
我们希望在 Linux 文件系统中存储数百万个文本文件,目的是能够压缩并将任意集合作为服务提供服务。我们尝试了其他解决方案,例如键/值数据库,但我们对并发性和并行性的要求使使用本机文件系统成为最佳选择。
最直接的方法是将所有文件存储在一个文件夹中:
$ ls text_files/
1.txt
2.txt
3.txt
Run Code Online (Sandbox Code Playgroud)
这在 EXT4 文件系统上应该是可能的,它对文件夹中的文件数量没有限制。
这两个 FS 进程将是:
我的问题是,在一个文件夹中存储多达 1000 万个文件是否会影响上述操作的性能或一般系统性能,这与为这些文件创建子文件夹树有什么不同?