问题标签 [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.

0 投票
1 回答
531 浏览

linux - 如何将 scsi 写入命令发送到内核模块中的 SSD

我尝试在 SSD 上尽可能快地写入。同步写入非常重要,因为我们需要知道数据是否是断电安全写入的。

我考虑过自己发送 scsi 命令,以避免大多数 Linux 内核块 IO 堆栈(在我们的用例中不需要)。为了避免内核进入/退出开销,它应该是一个内核模块。

  • 您知道如何将 scsi 写入发送到设备的示例吗?
  • 你将如何实现这一点?
  • 或者为什么 scsi 层是错误的入口点?
0 投票
2 回答
230 浏览

java - SSD损坏可以更改txt文件中的字符吗?

我有一个从一堆文本文件(价值约 50gbs)中读取的 java 应用程序。每个文件的大小从 5kb 到 35mb 不等。这些文件本身是从另一个 java 应用程序创建的,该应用程序按需运行但大约一周内未运行。该文件使用了许多分隔符,例如

| ; ,

我的应用程序运行良好,但最近开始抛出错误,出现数字格式异常。经过检查,我发现其中一个逗号已被翻转为 $

0.43916,22970.43081,6.76182$527640691.38786,|10,

我的问题是这个。由于驱动器损坏,这种“翻转”是否可能发生?整个文件中只有 1 个字符会改变似乎有点牵强。文件上的时间戳验证它没有被另一个程序“意外”修改。

我真的在这个问题上摸不着头脑。

0 投票
1 回答
443 浏览

hadoop - 用于 EMR 的 hi1.4xlarge SSD EC2 实例

我有几个在 EMR 上运行的 hadoop 作业。其中一些作业需要处理日志文件。日志文件很大,每个 .gz 格式约 3GB。日志存储在 S3 上。

目前,我使用 m1.xlarge 进行处理,仅将日志文件从 S3 复制到 HDFS 大约需要 3 个小时。在这里,瓶颈是从 S3 读取还是写入 HDFS?

我的计划是使用基于新 SSD 的 hi1.4xlarge,因为它具有快速 I/O,而不是 m1.xlarge。但它有助于降低成本吗?

但是hi1.4xlarge的成本要比m1.xlarge高很多。

m1.xlarge - 8 个 EC2 计算单元 @ 每个 0.614$ = 4.912 $ /小时 h1.4xlarge - 35 个 EC2 计算单元 @ 每个 3.1$ = 108.5 $ /小时

价格涨幅约为 23 倍。我会得到这么多的性能提升吗?考虑我的 hadoop 工作是高 I/O 限制。

我无法通过启动 hi1.4xlarge 实例自己测试它,所以在 StackOverflow 上询问它。有没有人有比较这两种实例类型的基准?谷歌没有帮助。

问候。

0 投票
1 回答
5358 浏览

windows - ATA 命令设备识别

我正在尝试使用 ATA_PASS_THROUGH_EX 识别设备。

当我看到输出缓冲区时,它包含所有无效数据。有人可以帮我做错什么吗?

更新:当我检查错误值时,它是 5,这意味着它是访问冲突。我在管理员模式下运行。难道我做错了什么?

-缺口

0 投票
1 回答
785 浏览

java - SSD 上的键/值存储非常慢

我确信:

  • 我正在 Linux 上使用 Java/Eclipse,并尝试在磁盘上分别存储大量 16/32 字节的键/值对。密钥是完全随机的,由 SecureRandom 生成。
  • 速度保持在约 50000 次插入/秒,直到达到约 100 万个条目。
  • 一旦达到此限制,java 进程每 1-2 秒从 0% CPU 到 100%、从 150MB 内存到 400MB、从 10 次插入/秒到 100 次振荡。
  • 我尝试了 Berkeley DB 和 Kyoto Cabinet 以及 Btrees 和 Hashtables。结果相同。

什么可能有助于:

  • 写在SSD上。
  • 对于每个插入,平均有 1.5 次读取 - 不断交替读取和写入。

我怀疑在达到某个缓存/缓冲区限制之前,不错的 50000 速率会上升。那么大的减速可能是由于 SSD 没有处理混合的读/写,正如这个问题所建议的那样:SSD 的低延迟键值存储

问题是:
这种极端减速可能来自哪里?不可能都是 SSD 的错。很多人都乐于使用 SSD 进行高速 DB 进程,我敢肯定他们经常混合读写。

谢谢。

编辑:我已经确保删除任何内存限制,并且 java 进程总是有空间分配更多内存。
编辑:仅删除读数和插入不会改变问题。

最后编辑:为了记录,对于哈希表,它似乎与初始数字桶有关。在京都机柜上,该数字无法更改,默认为约 100 万,因此最好在创建时获取正确的数字(要存储的最大记录数的 1 到 4 倍)。对于 BDB,它旨在逐步增加存储桶的数量,但由于它消耗资源,因此最好提前预定义数量。

0 投票
1 回答
1161 浏览

java - 用 Java 将日志写入 SSD 的最快方法是什么?

我有一些小事务,我需要将它们同步到 java 程序中的 SSD 上的文件系统(ext4)。

如果我需要在每次事务后与文件系统同步,将这些事务顺序写入文件的最快方法是什么?每个事务的数据非常小,但如果这会增加事务/秒,则可以写入更多(例如填充一页)。

数据写入一次后,只能读取。

此外,是否对文件系统进行了任何调整以提高性能?是否有更适合该任务的稳定文件系统?

更新:这似乎是一个文件系统问题。使用同步时,Ext4 比 Ext3 慢得多?建议? 更新问题的解决方案是预分配文件(在 java _file.setLength(size) 中)。这将导致在 ext4 上预先分配空间并且将所有元数据写入一次。在此之后,写入文件将只编辑用户数据,元数据保持不变。在我的情况下,这导致了 10 倍的加速。

0 投票
1 回答
112 浏览

solid-state-drive - 可以将IDE的目录(工作区)强制包含到缓存SSD中吗?

我有混合存储驱动器(HDD 500 GB+ 和SSD 32 GB)。我可以强制将 Eclipse IDE 和 Eclipse 的工作目录(Workspace)包含到 SSD 驱动器(默认用于缓存)中吗?

0 投票
1 回答
87 浏览

linux - 我可以将我的应用程序代码放在 RAM 的分区上吗?

我想使用 RAM 而不是 SSD。我正在寻找有经验的人给我一些关于这方面的建议。我想挂载一个分区并将我的 Rails 应用程序放入其中。

有任何想法吗?

UPD:我测试了 SSD 和 RAM。我有一个 OSX,配备 4x4Gb Kingston @ 1333 RAM、Intel Core i3 @ 2,8 Ghz、OCZ Vertex3 @ 120Gb、HDD Seagate ST3000DM001 @ 3Tb。我的操作系统安装在 SSD 和 ruby​​ 上,宝石放在 SSD 的主文件夹中。我在 sqlite 中创建具有 10.000 个产品项的新 Rails 应用程序,并使用代码创建控制器:

用AB测试过。

固态硬盘

内存

硬盘

因此,我认为将宝石放在 SSD 上的 ruby​​ 中的东西并慢慢获取此脚本,我将在真实服务器上进行测试,并将所有 ruby​​ 脚本放入具有更复杂代码或实际应用程序的 RAM 中。

ps:对不起我的英语:)

0 投票
1 回答
1290 浏览

performance - 使用 ssd 和 mmap 改进并发文件读取

我有大量的气象文件。太大,无法装入 ram。

我需要执行大量并发随机读取。所以,我认为 SSD + mmap 可以提高性能。

但是并发 mmap 读取是怎么回事?他们应该如何组织?

在此处输入图像描述

0 投票
2 回答
691 浏览

java - 无内存交换的 SSD 的 java 最快并发随机文件 R/W 方法

我有一个带有 32GB ram 和一组 4 个 SSD 的 linux 机器,在 raid 0 配置中,最大吞吐量约为 1GB(随机 4k 读取),我正在尝试确定随机并同时访问文件的最佳方式使用java。到目前为止,我看到的两种主要方式是通过随机访问文件和映射的直接字节缓冲区。

这是它变得棘手的地方。我有自己的对象内存缓存,因此对存储在文件中的对象的任何调用都应该通过磁盘而不是分页内存(我已禁用我的 linux 机器上的交换空间以防止这种情况发生)。虽然映射的直接内存缓冲区被认为是最快的,但它们依赖于交换,这并不好,因为 A)我将所有空闲内存用于对象缓存,而使用映射字节缓冲区会产生大量的序列化开销,这就是对象缓存的存在防止。(我的程序已经受 CPU 限制) B)使用映射字节缓冲区,操作系统处理数据何时写入磁盘的详细信息,我需要自己控制它,即。当我 write(byte[]) 时,它会立即直接输出到磁盘,这是为了防止电源故障时数据损坏,因为我没有使用 ACID 事务。

另一方面,我需要大量并发,即。我需要同时读取和写入同一个文件中的多个位置(同时使用偏移/范围锁来防止数据损坏)我不确定如果没有映射字节缓冲区我怎么能做到这一点,我总是可以查询读取/写,但我不确定这会对我的吞吐量产生什么负面影响。

最后,当我为读取或写入创建新的 byte[] 对象时,我不会遇到这种情况,这是因为我每秒执行几乎 100000 次读取/写入操作,分配和垃圾收集所有这些对象会杀死我的程序,这是时间敏感且已经受到 CPU 限制,重用 byte[] 对象就可以了。

请不要推荐任何数据库软件,因为我已经尝试过其中的大多数软件,它们增加了很多复杂性和 CPU 开销。

有人遇到过这种困境吗?