标签: disk

分析磁盘访问

目前我正在研究一个读写磁盘的MFC应用程序.有时这个应用程序运行得非常快,有时候它很慢.我猜这是因为涉及磁盘访问,因此我想对其进行分析.这些是这方面的一些问题:

(1).目前我正在使用AQTime分析器来分析应用程序.有没有人试过使用它来分析磁盘访问?或者还有其他可以使用的工具吗?

(2).我应该关注哪些最重要的磁盘参数?

(3).如果我有多个线程试图从磁盘读取和写入数据会影响性能吗?即我最好有一个单独的线程访问磁盘?

c++ mfc multithreading profiling disk

5
推荐指数
1
解决办法
1462
查看次数

用于可变长度记录存储和磁盘查找的数据结构/算法,仅在主键上进行搜索

我正在寻找一种适用于基于大块的设备(例如机械硬盘驱动器)的算法/数据结构,该设备针对插入,获取,更新和删除进行了优化,其中总是使用数据的id和数据来完成搜索任何ID的字段都有可变长度.

B树似乎是一个常见的引用结构,但主要用于固定长度记录.我也期望获得和更新的次数比插入和删除的次数多得多.我可以摆脱B树的O(log m)查找吗?

我很高兴它成为一个组合系统,例如ISAM结合了B树和线性文件存储,看起来它可以作为一种方法使用可变长度记录.还有更好的东西吗?

进一步的限制:

1)ID可能是稀疏的,但可以使它们成为线性数字块 - 但是在大范围内(64位)

2)我不想使用DBMS,性能对于我的特定问题并没有证明是非常好的.我不需要完整DBMS使用的任何操作,我不需要搜索.我需要一些可以轻松调整和优化的东西.称之为学术好奇心,如果它由MySQL执行,那么我将使用它,但我必须尝试更快.

3)数据集大于可以适合内存的数据集,但是如果它像key,offset一样简单,那么索引可能很好地适合内存.我当然在寻找存储中10亿个或更多实体的东西.

4)理想情况下,删除记录时应恢复空间.这可能是通过压缩,但我有兴趣看看是否有更好的方法(例如B树很容易恢复空间).

filesystems algorithm disk data-structures

5
推荐指数
2
解决办法
4625
查看次数

使用 NSURLRequest 和 NSURLConnection 进行磁盘缓存是否真的适用于 iPhone?

我有一个 UITableView,其单元格包含从 Internet 异步加载图像的自定义 ImageView。要加载这些图像,我使用 NSURLRequest 和 NSURLConnection 工作正常。唯一的问题是图像没有缓存,因此每次使用时都会下载。我试图将 NSURLRequest 的 cachePolicy 设置为“NSURLRequestReturnCacheDataElseLoad”,但没有任何效果。

链接上的最后一个答案看来,iPhone 上的 NSURLRequest 不支持磁盘缓存。这样对吗?

如果它真的有效,我很想知道在我的情况下它不起作用的原因是什么。

这是代码:

NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://myurl"] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60.0];


connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
Run Code Online (Sandbox Code Playgroud)

iphone caching disk nsurlconnection nsurlrequest

5
推荐指数
1
解决办法
2553
查看次数

C-SCAN(电梯)算法如何导致饥饿?

我正在阅读Silberschatz的OS书.在第16.8.1节中,它说:

电梯算法的基本问题是在磁盘的特定区域中进行的I/O操作可能导致需要在磁盘的其他区域中发生的请求的缺乏.

C-SCAN算法按顺序处理所有扇区,如本网页所示.
我不明白这是如何导致一些请求无限期等待的.

algorithm io operating-system scheduling disk

5
推荐指数
1
解决办法
2492
查看次数

WMI:Win32_DiskDrive 获取物理磁盘驱动器上的总扇区

我尝试使用Win32_DiskDrive获取磁盘的最大总扇区,但它们都返回错误的值。我使用HxD,该程序返回准确的值。我尝试使用 fdisk 获取 Linux 中的总扇区,它也准确返回。

我注意到Win32_DiskDrive MSDN中有一条注释如下:

该属性的值是通过 BIOS 中断 13h 的扩展功能获得的。如果驱动器使用转换方案来支持高容量磁盘大小,则该值可能不准确。请咨询制造商以获取准确的驱动器规格。

但我没明白这是什么意思?以及如何解决这个问题?

更新1:

这是我的 python 脚本的片段代码。

必需:PythonPyWin32WMI

import wmi

c = wmi.WMI()
for diskDrive in c.query("SELECT * FROM Win32_DiskDrive"):
    print diskDrive.Name, "\nTotal Sector: ", diskDrive.TotalSectors
Run Code Online (Sandbox Code Playgroud)

更新2:

根据要求,这里是检测到 HxD 总扇区的 WMI 片段。

  • WMI: 625137345(顶部)
  • HxD: 625142448(底部)

部门差异截图

更新3:

如果有兴趣,你也可以在自己的计算机上尝试一下,看看Win32_DiskDrive是否报告准确的结果。我在许多其他计算机(WinXP & 7)和其他存储设备(硬盘、闪存盘等)上尝试过此操作,但所有结果都不准确。

要尝试请安装PythonPyWin32WMI

非常感谢

python wmi winapi pywin32 disk

5
推荐指数
1
解决办法
6636
查看次数

磁盘数据结构的架构

我最接近最终理解磁盘 btree 架构的是这个.

它很简单,很容易阅读和理解。但是我还是觉得很迷茫。似乎根本没有内存数据结构。我错过了什么吗?是什么让这成为一个 btree?是否只是“指向”其子节点键的 long 数组?这样有效率吗?大多数数据库和文件系统就是这样设计的吗?

是否有在内存中的磁盘 btree(或其他数据结构)上实现的方法?每个节点在哪里包含文件偏移量之类的?

c database filesystems b-tree disk

5
推荐指数
1
解决办法
1628
查看次数

当有扇区时,为什么需要块?为什么块大小是扇区大小的倍数?

在阅读磁盘结构时,我发现块大小是扇区大小的倍数。第一个想法是,当你有扇区时,为什么你甚至需要块,其次,为什么块大小是扇区的倍数,如 1、2、4?

为什么不能是扇区的一半?这里面的道理是什么?这不是为了家庭作业。

operating-system block disk sector

5
推荐指数
1
解决办法
2402
查看次数

.svn 文件夹占用大量磁盘空间

今天我意识到版本控制下的文件夹中隐藏的 .svn 文件夹占用了大约 16 GB 的硬盘空间。我正在使用 SSD 驱动器,所以这是相当多的。我真的需要这些巨大的子文件夹吗?据我所知,它们用于管理,但为什么它们与版本控制下的文件夹大小大致相同?

谢谢!

svn space disk

5
推荐指数
1
解决办法
2817
查看次数

如何为docker容器定义磁盘配额?

我面临着在docker容器上拥有磁盘配额的要求.具体来说,我想限制不在基本图像层中但在差异中的数据量.谷歌搜索"docker disk quota"建议使用设备映射器或btrfs后端.虽然能够在两个后端(具有不同的语义)中具有配额,但两者都存在问题:

  • btrfs不够稳定,不适合生产使用
  • device mapper仅限制包括基本图像在内的完整容器大小,但不允许限制diff

解决这个问题的最佳方法是什么?

disk quota docker

5
推荐指数
1
解决办法
2533
查看次数

java应用程序(macOS Catalina)如何请求访问网络卷?

我的应用程序完全是用 java 编写的(我们从 java8 迁移到 java11)并且在 High Sierra 下运行良好:
new RandomAccessFile(file_on_network_volume, "rws")获得访问权限并继续执行。

Catalina下运行它失败了
java.io.FileNotFoundException: /Volumes/messages/xyz/FILE.xdt (Operation not permitted)

我知道任何尝试访问网络卷的应用程序都需要特殊权限,我在系统偏好设置中查看了它们,可以将它们删除以tccutil reset SystemPolicyNetworkVolumes [bundle_id]进行重复测试。

java 代码如何正确请求用户的访问权限,以便处理可以继续?

到目前为止我做了什么:

  • 将代码更改为
    AccessController.doPrivileged((PrivilegedExceptionAction<RandomAccessFile>) () -> new RandomAccessFile(file, "rws"));
    导致使用 IntelliJ 运行的 JUnitTest 通过对话
    请求权限 IntelliJ IDEA 中的应用程序请求访问网络卷上的文件

IntelliJ IDEA 中的应用程序请求访问网络卷上的文件


然后测试成功对网络卷进行了所需的操作。
效果是系统首选项中指示的权限如预期:
存在访问网络卷的权限

存在访问网络卷的权限

  • 在 Info.plist 中添加了与
    <key>NSNetworkVolumesUsageDescription</key> <string>@@bundle_name@@ benötigt Zugriff auf ein Netzwerkvolume.</string>
    显示给用户的对话框中的文本相对应的条目

但仍然缺少一些东西。应用程序请求权限,因此操作失败。IntelliJ 做了一些我目前还没有弄清楚的正确的事情。

java file-permissions disk macos-catalina

5
推荐指数
0
解决办法
91
查看次数