问题标签 [solid-state-drive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - 使用 ssis 和 ssd 驱动器更快地处理数据
我们有一个新的本地服务器,它使用 sql server 2008 和 ssis 处理数据。在这台服务器上,我有专门的驱动器来做不同的事情。C盘是操作系统和软件的。d 驱动器用于 db 存储,ssis 用于存储。e驱动器是一个ssd驱动器,我们恢复ssis正在使用的每个数据库。
我们的想法是我们处理分配的数据,并且由于 ssd 驱动器只有 500gb(因为成本),我们会将所有内容都放在常规驱动器上,并将正在使用的数据库转移到 ssd 驱动器以使进程运行得更快。
当我在没有 ssd 驱动器的情况下运行 ssis 时,大约需要 8 小时,当我运行在 ssd 驱动器上恢复数据库的过程时,该过程需要大约相同的时间来处理(事实上,如果我包括数据库的恢复该过程需要更长的时间)截至目前,我无法将操作系统和软件移动到 ssd 驱动器进行测试,看看这是否有助于该过程。
有没有办法利用 ssd 驱动器来处理数据并加快处理速度。
c++ - 用 C++ 快速编写许多大文件
我有一个程序,它从不同的相机获取原始数据流并将其写入磁盘。该程序运行这些类型的记录约 2 分钟,然后使用另一个程序来处理这些帧。
每个原始帧为 2MB,帧速率为 30fps(即数据速率约为 60MB/s),我正在写入可以轻松处理持续 > 150MB/s 的 SSD(通过从另一个磁盘复制 4000 个 2MB 文件进行测试)耗时 38 秒,Process Explorer 显示持续的 IO 活动)。
我的问题是,偶尔调用fopen()
,fwrite()
并fclose()
停止长达 5 秒,这意味着 300MB 的帧作为积压日志在内存中建立,经过几次这些延迟后,我达到了 32 位进程的 4GB 限制。(发生延迟时,Process Explorer 会显示 IO 活动的间隙)
有一个线程运行一个循环,为添加到队列中的每个新帧调用此函数:
(实际代码中也有错误检查,但对这个问题没有影响)我正在记录每个块所花费的时间以及运行该函数所花费的总时间,我得到的结果大部分时间看起来像这样:(以毫秒为单位的时间)
IE。~5ms 运行整个函数,~1ms 打开文件,~2ms 调用 write,~2ms 关闭文件。
然而,偶尔(平均每 50 帧中约有 1 帧,但有时发生此问题之间可能有数千帧),我得到的帧需要超过 4000 毫秒:
和
所有的框架都是相同的大小,它永远不会fwrite
花费额外的时间,总是fopen
或fclose
没有其他进程正在读取/写入此 SSD(通过 Process Monitor 确认)。
有谁知道什么可能导致这个问题和/或任何避免/减轻这个问题的方法?
io - 每秒对 SSD 进行多次小写入是否安全?
我有一个应用程序每秒通过网络接收数百个字符串,大约 50 个字节长。我想将这些缓存到 SSD 以进行进一步处理。如果我每秒执行数百~50 字节的文件附加写入,SSD 是否安全?我怀疑操作系统可能会聚合这些写入,但我不知道。我确实模糊地理解 SSD 是由必须在全有或全无的基础上更新的单元组成的,而且每个单元只能承受这么多的写入(我认为,对于商品驱动器来说,数百或数千次)。我的多次小型写入应用程序是否会使我的 SSD 走向毁灭?如果我缓存到内存并每分钟/小时以块的形式写入磁盘,我会更安全吗?显然这更复杂(最近一分钟/小时的内存缓存的 Web 服务,旧数据的磁盘),
我已经做了几个月而不是几年没有负面影响的事情,但那是几年前的事了,我还没有做过认真的测试。我确实从经验中知道,如果天真地实施,我可以通过这种方法在几个月内非常可靠地销毁硬盘驱动器。
windows - 什么会导致成功的 FTP 传输在全新的 RackSpace SSD 服务器上被截断?
我正在尝试升级我的网络服务器。我在使用 SSD 的 RackSpace 上创建了最新一代虚拟服务器的全新实例。在这个全新的实例上,我安装了以下内容:
- 谷歌浏览器
- FileZilla FTP 客户端
然后我连接到另一台服务器上的 FileZilla FTP 服务器,该服务器托管 2 个我用来测试的图像文件。然后我下载了 2 个图像文件,FileZilla 将其报告为“成功传输”。但是,这两个图像文件都被截断了!这可能是什么原因造成的?
需要注意的几点:
- 这仅在使用 SSD 的新实例上发生。如果我创建一个没有 SSD 的相同实例(改用 SATA),则不会发生错误。
- 在传输文件的服务器上,文件也被报告为已成功传输。该服务器已被用作 FTP 服务器很长一段时间没有任何问题。
- 如果我将新的 SSD 实例设置为 FTP 服务器并向其上传一堆文件,其中一些文件会随机截断 2-10KB。在大约 150MB 的上传中,我最终可能会丢失 150-200KB。如果我再次传输它们,则会截断不同的文件子集。
- 如果我将 FTP 服务器上的传输速度限制为 100KB/s,则 2 个图像文件可以成功传输而不会被截断。如果我将传输速度限制为 500KB/s,图像文件将被截断,就像没有限制一样。
关于如何发生这种情况的任何想法?
更新:它与 FileZilla 无关。这是在命令行上使用 ftp 的相同问题:
ubuntu - 在 EC2 ubuntu 实例中无法访问 SSD 驱动器
在以下具有 SSD 驱动器的 EC2 实例类型中
- r3.2xlarge
- r3.4xlarge
- i2.xlarge
当我通过 SSH 登录时,我看不到 SSD 驱动器。我正在尝试“df -h”。
我努力了
- 重新启动,但这并没有帮助。
- 试图终止并创建一个也无济于事的新实例。暗示它不是一次性的问题。
c++ - 在 Windows 中检测 SSD
我想根据系统驱动器是否为 SSD 来更改我的 C++ 应用程序的性能和行为。例子:
- 使用 SSD,我希望我的游戏服务器应用程序能够完全加载每个地图以及所有对象,以最大限度地提高性能。
- 使用 HDD,我希望我的游戏服务器应用程序仅加载每个地图中的基本对象和实体,而不加载外部对象。
我看过http://msdn.microsoft.com/en-gb/library/windows/desktop/aa364939(v=vs.85).aspx,这是一种确定某个驱动器是否为 HDD、CD 的方法ROM、DVD ROM、Removable Media 等,但仍然无法检测主系统驱动器是否为 SSD。我还看到了有什么方法可以检测驱动器是否为 SSD?,但该解决方案仅适用于 Linux。
我认为我可以以某种方式生成一大笔罚款(500MB),然后计算写入文件所需的时间,但是其他系统变量很容易影响结果。
在 Windows 中,使用 C++,有没有办法获得主系统驱动器是否是 SSD?
mysql - Persona server 5.1 显着降低 SSD 服务器上的读取速度
我们正在尝试在 Linux 3.0.3 上迁移到 Linux 软件 RAID 上的 8x SSD RAID。
我们之前的服务器配置是 96GB 内存,每月相当昂贵。我们的目标是迁移到价格约为 1/2 到 1/3 的 SSD。
我们遇到的问题是它跟不上我们的复制负载并且落后了。
经过一系列调整后,我们注意到以下 IO 负载:
你可以看到我们正在以相当稳定的速度写入……峰值大约为 180MB/s。
但我正试图弄清楚为什么我们的跌幅如此之大。一旦读取进入等式,性能就会完全下降。服务器没有做太多的读取,只是它完全破坏了我们的写入吞吐量。
我做了一些合理的 SSD 性能更改。
我们在 XFS 上使用 noatime 和 nobarrier。
我们使用的驱动器是美光 p300,每个 100GB。我们在 16 核 2.8Ghz X5570 上的 Adaptec RAID 控制器上有 8 个它们。
这是一个 RAID 0 设置。RAID 条带大小为 256k。我使用较小的条纹尺寸,这似乎是最好的价值。
IO 调度程序现在是 noop。我们也尝试了截止日期,性能大致相同。
这是我们 MySQL 配置的原始 pastebin。
http://pastebin.com/raw.php?i=Bn13Hhj9
我们所做的重要更改是:
我们的缓冲池大小约为 42GB ... 盒子有 48GB。
我想做的一个明显改变是使用 4k 页面。但是,这是(至少)一天的工作,因为我必须对整个数据库进行完整的 mysqldump 并重新导入。
但老实说,这可能会解决这种情况,因为理论上,我将写入/读取 1/4 的数据。但是,读取导致如此大规模的写入下降仍然让我感到困惑。
对于任何反馈,我们都表示感谢。它还可以通过触发一个想法来帮助我解决问题。
c++ - 随机读/写的 SSD 原始 I/O 基准测试
我的笔记本电脑有一个 SSD 磁盘,其物理磁盘扇区大小为 512 字节,逻辑磁盘扇区大小为 4,096 字节。我正在开发一个必须绕过所有操作系统缓存的 ACID 数据库系统,因此我直接从分配的内部存储器 (RAM) 写入 SSD 磁盘。我还在运行测试之前扩展了文件,并且在测试期间不调整它的大小。
现在这是我的问题,根据SSD 基准,随机读写应该分别在 30 MB/s 到 90 MB/s 范围内。但这是我无数次性能测试中的(相当可怕的)遥测数据:
- 读取随机 512 字节块(物理扇区大小)时为 1.2 MB/s
- 写入随机 512 字节块(物理扇区大小)时为 512 KB/s
- 读取随机 4,096 字节块(逻辑扇区大小)时为 8.5 MB/s
- 写入随机 4,096 字节块(逻辑扇区大小)时为 4.9 MB/s
除了使用异步 I/OI 之外,还设置了FILE_SHARE_READ
和FILE_SHARE_WRITE
标志来禁用所有操作系统缓冲——因为我们的数据库是 ACID 我必须这样做,我也尝试过FlushFileBuffers()
,但这给了我更糟糕的性能。我还等待每个异步 I/O 操作按照我们的某些代码的要求完成。
这是我的代码,它有问题还是我陷入了这种糟糕的 I/O 性能?
c++ - 在 POSIX 操作系统上检测 SSD 存储设备
我正在开发一个操作系统可移植程序,该程序将受益于检测物理存储设备是 SSD 还是普通的旧旋转磁盘。
在 Linux 上有:
如果是 SSD,则返回 0 或 1,但我不确定这是否是最好的方法。
在 Windows 和 UNIX 上,我还没有找到任何检测方法,也许我应该使用ioctl DEVICE_SEEK_PENALTY_DESCRIPTOR
并检查搜索速度(在 SSD 存储设备上应该非常低),或者可能用于DeviceIoControl
检查标称媒体旋转速率(这也应该在 SSD 存储设备上非常低)。
关于如何在与 POSIX 兼容的操作系统上检测 SSD 磁盘的任何建议?
java - 重复写入/删除 SSD 的风险?
我有一个 Java 程序,它创建一个大小约为 1K 的日志文件。如果我运行一个删除旧日志的测试,并创建一个新日志,然后保存它,重复一百万次,如果文件的大小随着时间的推移而增长(高达几 MB),我是否会冒损坏我的 SSD 的风险? 日志文件是否有可以避免这种风险的大小限制,或者任何人都可以帮助我了解风险的机制吗?