- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 linux 系统上,我有一个包含大约 100.000 个文件的目录(它们包含一些统计数据)。我必须使用通配符访问它们,现在我遇到了一些性能问题。访问特定文件时,速度非常快:
time ls 19991
19991
real 0m0.004s
user 0m0.000s
sys 0m0.000s
使用通配符时(如您所料)速度较慢:
time ls 19991*
19991
real 0m0.043s
user 0m0.020s
sys 0m0.020s
但是:当我尝试同时访问文件时,所有访问都变慢了:
i=1; while [ $i -le 10 ]; do (time ls 19991* &) ; let i=i+1; done
19991
19991
real 0m0.248s
user 0m0.010s
sys 0m0.020s
19991
real 0m0.279s
user 0m0.000s
sys 0m0.040s
19991
19991
19991
real 0m0.306s
user 0m0.050s
sys 0m0.000s
real 0m0.236s
user 0m0.010s
sys 0m0.030s
real 0m0.257s
user 0m0.010s
sys 0m0.040s
real 0m0.263s
user 0m0.020s
sys 0m0.020s
19991
19991
real 0m0.196s
user 0m0.030s
sys 0m0.010s
real 0m0.175s
user 0m0.020s
sys 0m0.020s
19991
real 0m0.095s
user 0m0.040s
sys 0m0.000s
19991
real 0m0.158s
user 0m0.020s
sys 0m0.040s
即使访问是由内核序列化的,我预计第一个“ls”大约需要 40 毫秒,第二个 80 毫秒,第三个 120 毫秒,...。但现在即使是最快的“ls”也需要 95 毫秒,其中大多数大约需要 200 毫秒。
这在使用本地文件系统 (ext3) 以及使用网络挂载目录 (nfs) 时会发生。所以我认为它与特定的文件系统无关。
有什么想法导致这种放缓或如何解决它吗?
最佳答案
总共用了多少时间?
如果我查看用户时间和系统时间,那么它们仍然很小。所以也许这就是您所看到的:
init job1
init job2
init job3
...
init job10
run half of job1
...
run half of job10
finish jobs1
...
finish jobs10
比较这些:
$ time ( i=1; while [ $i -le 100 ]; do time ls 19991* & let i=i+1; done ;wait)
real 0m1.278s
user 0m2.532s
sys 0m2.236s
$ time ( i=1; while [ $i -le 100 ]; do time ls 19991* ; let i=i+1; done ;wait)
real 0m3.197s
user 0m1.669s
sys 0m1.535s
User和sys大致相同。并行版本中较长的 user+sys-time 可以用 fork 的开销来解释。较低的实时性可以用多个 CPU 来解释。
因此,您的时间安排会受到更多并行运行的作业的严重影响。
关于linux - 在 Linux 中使用通配符降低并发文件访问速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14336058/
我的网址看起来像 '/api/comments/languages/124/component/segment_translation/2' 我知道 url 的哪些部分是静态的;并且是动态的 - 并且
如何使用通配符查找和替换主域之后的所有字符(包括“/”字符)? 例如,我有以下 4 行: intersport-schaeftlmaier.de/ weymouthhondapowersports.c
我有 3 个控件,其 ID 为 control_1、control_2、control_3。 我想隐藏这些控件。 目前我正在使用这个: $('#control_1').hide(); $('#cont
我有一个旧歌曲数据库,我想将其转移到新数据库。我的旧数据库看起来像这样,多个值被填充在一个用逗号分隔的字段中 SONG id | title | artist |
首先,我知道downloads表没有标准化。 我有这两个表: downloads map | author 1 | Nikola 2 | Nikola George 和 mappers mapper_
通配符可用于替代字符串中的任何其他字符。 SQL 通配符 在 SQL 中,通配符与 SQL LIKE 操作符一起使用。 SQL 通配符用于搜索表中的数据。 在 SQL 中,可使用以下通配符:
我在 shell 脚本中有一行看起来像这样: java -jar "$dir/"*.jar ,因为我只想执行该文件夹中恰好命名的 jar 文件。但这并不像我预期的那样有效。我收到错误消息: Error
我想在 Active Directory 用户的所有属性中搜索特定电话号码/分机号。 我可以像这样获取所有属性: get-aduser joesmith -Properties * 但我想过滤结果,例
我在运行 Python 3在 Windows 机器上使用 PowerShell .我正在尝试执行一个 Python 文件,然后使用通配符将多个文件(file1.html、file2.html 等)作为
我有一个 div,并且有一些处于未定义级别的子节点。 现在我必须将每个元素的 ID 更改为一个 div。如何实现? 我想,因为它们有向上的ID,所以如果父级是id='path_test_maindiv
我是 Lua 的新手,所以我现在正在学习运算符部分。在 Lua 中是否有与字符串一起使用的通配符? 我有 PHP 背景,我实际上是在尝试编写以下代码: --scan the directory's f
我在 countList 方法上遇到编译时错误。 public static void countList( List list, int count ){ for( int i =
我们需要在运行时检索多个类实例,而无需手动维护所有可用类型的列表。 可能的方法: 检索带有@xy注释的每种类型的实例 检索每种类型的实例实现接口(interface)iXY 检索每种类型的实例,命名如
我目前陷入了序言问题。 到目前为止我有: film(Title) :- movie(Title,_,_).(其中“movie(T,_,_,)”是对我的引用数据库) namesearch(Title,
我想从字符表达式(在 R 中)中删除一个“*”。在阅读帮助页面并尝试谷歌后,我无法充分理解 gsub 的复杂性。有人可以建议我该怎么做吗? 谢谢, 乔纳森。 最佳答案 您需要转义两次:一次针对 R,一
在我的 DOM 中,我有一个动态生成对话框的表。 DOM 中的对话框将具有以下形式的 ID: id="page:form:0:dlg" id="page:form:1:dlg" id="page:fo
我是 Java 新手,并且已经陷入这样一种情况,很明显我误解了它如何处理泛型,但是阅读教程和搜索 stackoverflow 并没有(至少到目前为止)让我清楚我怀疑我滥用了通配符。需要注意的是,我有
我想使用 jQuery 更改单击时图像的 src 属性。这是 HTML: View 2 在 img src 中,我想将“a”替换为“b”,但我的问题是我想忽略它前面的“1”,因为它也可能看起来像这样
我有一个 mysql 数据库,我的表是: Name | passcode ---------------------- hi* | 1111 ------------------
我想选择所有在星号所在位置具有确切 4 个“未知”字符的文档:(例如“****”可能是“2018”) foreach (string s in Directory.GetFiles(@"C:\User
我是一名优秀的程序员,十分优秀!