Chronicle:如何优化内存映射文件以实现低延迟?
Chronicle: How to optimize memory-mapped files for low-latency?
我正在使用 Chronicle 将大量数据从一个 JVM 传输到另一个。问题是我注意到我的基准测试有很多抖动。我对内存映射文件的了解有些有限,但我知道 OS 在内存和磁盘之间来回交换页面。
在使用 Chronicle 时,如何配置这些页面以获得最佳性能,在我的情况下,抖动更少,延迟可能最低?他们需要大还是小?他们需要多还是少?
这是我目前在 Ubuntu 盒子里的东西:
$ cat /proc/meminfo | grep Huge
AnonHugePages: 2048 kB
ShmemHugePages: 0 kB
HugePages_Total: 1
HugePages_Free: 1
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 1048576 kB
假设您有 Linux,您可以在构建器上使用 useSparseFiles(true)
启用稀疏文件。
您还可以使用更快的驱动器来减少异常值或/dev/shm
。
闭源版本中有一个异步模式,但是,如果没有它,您可以获得远低于 80 微秒的大多数离群值。
Chronicle 队列不使用大页面。
这是我在将它与 Kafka 进行比较时创建的图表,写入 Corsair MP600 Pro XT。
http://blog.vanillajava.blog/2022/01/benchmarking-kafka-vs-chronicle-for.html
注意:这是写入和读取大约 220 字节的对象(带序列化)的两跳延迟
我正在使用 Chronicle 将大量数据从一个 JVM 传输到另一个。问题是我注意到我的基准测试有很多抖动。我对内存映射文件的了解有些有限,但我知道 OS 在内存和磁盘之间来回交换页面。
在使用 Chronicle 时,如何配置这些页面以获得最佳性能,在我的情况下,抖动更少,延迟可能最低?他们需要大还是小?他们需要多还是少?
这是我目前在 Ubuntu 盒子里的东西:
$ cat /proc/meminfo | grep Huge
AnonHugePages: 2048 kB
ShmemHugePages: 0 kB
HugePages_Total: 1
HugePages_Free: 1
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 1048576 kB
假设您有 Linux,您可以在构建器上使用 useSparseFiles(true)
启用稀疏文件。
您还可以使用更快的驱动器来减少异常值或/dev/shm
。
闭源版本中有一个异步模式,但是,如果没有它,您可以获得远低于 80 微秒的大多数离群值。
Chronicle 队列不使用大页面。
这是我在将它与 Kafka 进行比较时创建的图表,写入 Corsair MP600 Pro XT。
http://blog.vanillajava.blog/2022/01/benchmarking-kafka-vs-chronicle-for.html
注意:这是写入和读取大约 220 字节的对象(带序列化)的两跳延迟