JLBH示例2 –协调遗漏的会计处理

在这篇文章中:

  • 在运行JLBH时考虑或不考虑协调遗漏
  • 一个示例,以数字说明协同遗漏的效果
  • 关于流量控制的讨论



这是我用来描述如果不考虑协调遗漏而进行测量的情况下的示例:

假设您正在等待火车,但由于前面的火车晚了,因此在车站延迟了一个小时。 让我们想象一下,您晚点一个小时上火车,而火车通常需要半个小时才能到达目的地。 如果您不考虑协调遗漏,即使您在出发前在车站等了一个小时,您的旅程也花费了正确的时间,因此您不会认为自己遭受了任何延误!

但这正是运行微型基准测试时要做的。 您为每个“旅程”计时,而不是等待时间。

事实是,对于微型基准测试来说绝对没问题。 但是,当您要测量应用程序的延迟时,这并不理想。

默认情况下,尽管您确实设置了不考虑协调遗漏的计量功能,但JLBH度量端到端时间考虑了协调遗漏。

我写了这个简单的基准,以说明协调遗漏产生的影响有多大。

在此示例中,每隔10k迭代后,我们添加一毫秒的延迟:

package org.latency.spike;import net.openhft.chronicle.core.Jvm;
import net.openhft.chronicle.core.jlbh.JLBH;
import net.openhft.chronicle.core.jlbh.JLBHOptions;
import net.openhft.chronicle.core.jlbh.JLBHTask;/*** A simple JLBH example to show the effects od accounting for co-ordinated omission.* Toggle the accountForCoordinatedOmission to see results.*/
public class SimpleSpikeJLBHTask implements JLBHTask {private int count = 0;private JLBH lth;public static void main(String[] args){JLBHOptions lth = new JLBHOptions().warmUpIterations(40_000).iterations(1_100_000).throughput(100_000).runs(3).recordOSJitter(true).accountForCoordinatedOmmission(true).jlbhTask(new SimpleSpikeJLBHTask());new JLBH(lth).start();}@Overridepublic void run(long startTimeNS) {if((count++)%10_000==0){//pause a whileJvm.busyWaitMicros(1000);}lth.sample(System.nanoTime() - startTimeNS);}@Overridepublic void init(JLBH lth) {this.lth = lth;}
}

如果您设置了ordinatedOmission coordinatedOmission(false)那么您将获得此配置文件–正如预期的那样,毫秒延迟只能在最高的百分位数(从第99.99个百分位数开始)中看到。 或这样说,它只影响每10k迭代中的一个-并不令人惊讶。

Warm up complete (40000 iterations took 0.046s)
-------------------------------- BENCHMARK RESULTS (RUN 1) -----------
Run time: 11.593s
Correcting for co-ordinated:false
Target throughput:100000/s = 1 message every 10us
End to End: (1,100,000)                         50/90 99/99.9 99.99/99.999 - worst was 0.11 / 0.13  0.20 / 0.33  999 / 999 - 1,930
OS Jitter (14,986)                              50/90 99/99.9 99.99 - worst was 8.4 / 15  68 / 1,080  3,210 - 4,330
----------------------------------------------------------------------
-------------------------------- BENCHMARK RESULTS (RUN 2) -----------
Run time: 11.49s
Correcting for co-ordinated:false
Target throughput:100000/s = 1 message every 10us
End to End: (1,100,000)                         50/90 99/99.9 99.99/99.999 - worst was 0.11 / 0.13  0.16 / 0.28  999 / 999 - 999
OS Jitter (13,181)                              50/90 99/99.9 99.99 - worst was 8.4 / 12  36 / 62  270 - 573
----------------------------------------------------------------------
-------------------------------- BENCHMARK RESULTS (RUN 3) -----------
Run time: 11.494s
Correcting for co-ordinated:false
Target throughput:100000/s = 1 message every 10us
End to End: (1,100,000)                         50/90 99/99.9 99.99/99.999 - worst was 0.11 / 0.13  0.16 / 0.26  999 / 999 - 1,030
OS Jitter (13,899)                              50/90 99/99.9 99.99 - worst was 8.4 / 13  42 / 76  160 - 541
----------------------------------------------------------------------
-------------------------------- SUMMARY (end to end)-----------------
Percentile   run1         run2         run3      % Variation
50:             0.11         0.11         0.11         0.00  
90:             0.13         0.13         0.13         0.00  
99:             0.20         0.16         0.16         3.31    
99.9:           0.33         0.28         0.26         3.88   
99.99:        999.42       999.42       999.42         0.00  
99.999:       999.42       999.42       999.42         0.00    
worst:       1933.31       999.42      1032.19         2.14   ----------------------------------------------------------------------

但是,如果设置了coordinatedOmission(true)则会看到此延迟的真实效果。

Warm up complete (40000 iterations took 0.044s)
-------------------------------- BENCHMARK RESULTS (RUN 1) -----------
Run time: 11.0s
Correcting for co-ordinated:true
Target throughput:100000/s = 1 message every 10us
End to End: (1,100,000)                         50/90 99/99.9 99.99/99.999 - worst was 0.11 / 0.17  385 / 1,930  4,590 / 5,370 - 5,370
OS Jitter (13,605)                              50/90 99/99.9 99.99 - worst was 8.4 / 15  68 / 1,080  5,110 - 5,900
----------------------------------------------------------------------
-------------------------------- BENCHMARK RESULTS (RUN 2) -----------
Run time: 11.0s
Correcting for co-ordinated:true
Target throughput:100000/s = 1 message every 10us
End to End: (1,100,000)                         50/90 99/99.9 99.99/99.999 - worst was 0.12 / 0.18  42 / 901  999 / 999 - 1,030
OS Jitter (13,156)                              50/90 99/99.9 99.99 - worst was 8.4 / 13  38 / 68  209 - 467
----------------------------------------------------------------------
-------------------------------- BENCHMARK RESULTS (RUN 3) -----------
Run time: 11.0s
Correcting for co-ordinated:true
Target throughput:100000/s = 1 message every 10us
End to End: (1,100,000)                         50/90 99/99.9 99.99/99.999 - worst was 0.12 / 0.18  46 / 901  999 / 999 - 999
OS Jitter (13,890)                              50/90 99/99.9 99.99 - worst was 8.4 / 14  44 / 80  250 - 1,870
----------------------------------------------------------------------
-------------------------------- SUMMARY (end to end)-----------------
Percentile   run1         run2         run3      % Variation   
50:             0.11         0.12         0.12         0.00       
90:             0.17         0.18         0.18         0.00       
99:           385.02        41.98        46.08         6.11       
99.9:        1933.31       901.12       901.12         0.00       
99.99:       4587.52       999.42       999.42         0.00       
99.999:      5373.95       999.42       999.42         0.00       
worst:       5373.95      1032.19       999.42         2.14       ----------------------------------------------------------------------

实际上,每百次迭代(而不是10,000次迭代)在某种程度上会受到影响。 当您抬高百分位数时,您还可以看到延迟的逐步影响。

这清楚地表明了为什么协调遗漏必须成为基准测试的重要组成部分,尤其是如果您不能在程序中进行流控制时。 如果您不跟上进度,流量控制是一种停止消耗的功能,例如,如果您太忙,则将用户赶出站点。 Fix Engines无法施加流量控制,即您无法跟上市场的步伐,因为您无法跟上潮流! 进行流控制的程序以消费者为中心,而不进行流控制的程序以生产者为中心。

协调遗漏的考虑与能够为定义的吞吐量设置延迟密切相关,这将在下一个示例中介绍。

翻译自: https://www.javacodegeeks.com/2016/04/jlbh-examples-2-accounting-coordinated-omission.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于windows平台的命令行软件安装工具Chocolatey的安装

本文介绍Chocolatey的安装和使用 Chocolatey 这是基于.NET Framework 4以上的windows安装软件的命令行工具安装 第一步,打开你的powershell.exe,使用管理员方式运行 第二步,运行命令 Get-ExecutionPolicy如果返回 Restricted ,那么…

vue项目 乐橙云 轻应用直播SDK imouplayer.js

官网案例:https://open.imoulife.com/book/light/sdk.html 文档: https://open.imou.com/developDoc/31 1,下载 对应的资源 https://open.imoulife.com/book/readme/upload.html 2,引入资源 2.1 把下载的资源(static&#xff0c…

windows 开启mysql日志记录_windows下mysql日志开启与查询

修改 my.ini文件加入以下语句(在没有设置的前提下)log-errord:/log/mysql/mysql_log_err.txtlogd:/log/mysql/mysql_log.txt#log-bind:/log/mysql/mysql_log_binlog-slow-queries d:/log/mysql/mysql_log_slow.txt使用以下命令查看是否启用了日志mysql>show variables like …

jmx 复用 jmx_JMX:一些入门说明

jmx 复用 jmxJMX(Java管理扩展)是一种J2SE技术,可以管理和监视Java应用程序。 基本思想是实现一组管理对象,并将实现注册到平台服务器,在平台服务器上,可以使用一组连接器或适配器从本地或远程调用这些实现…

内置函数——filter和map

filter filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False , filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。 它的到的结果是一个迭代器 例…

git 上下载的项目在本地安装依赖时报错 Could not resolve dependency

安装依赖时报错:无法安装依赖 看报错里面的提示:this command with --force, or --legacy-peer-deps –force 会无视冲突,并强制获取远端npm库资源,即使本地有资源也会覆盖掉;–legacy-peer-deps:安装时…

JavaFX技巧23:节省内存! 属性的阴影场

Java 8中引入的属性和属性绑定是非常有用的编程概念。 当您开发用户界面时,它们特别有用。 实际上,它们是如此有用,以至于开发人员成为所有事物都应该是属性而不是原始属性的想法的受害者。 不幸的是,他们很容易忘记,诸…

mysql udb_MySQL InnoDB的一些参数说明

参考:http://addls.com/mysql-innodb-%E4%B9%8B-ibdata1-%E7%98%A6%E8%BA%AB%E5%A4%A7%E6%B3%95.html# 备份数据库:/usr/local/mysql/bin/mysqldump -uDBuser -pPassword –quick –force –routines –add-drop-database –all-databases –add-drop-table > /d…

python_fullstack基础(十一)-常用模块

python常用模块 re模块 一、正则表达式 在线测试工具 http://tool.chinaz.com/regex/ 1、字符组 : [字符组] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示 字符分为很多类,比如数字、字母、标点等等。 假如你现在…

npm 安装依赖遇到的问题

npm npm的服务器位于国外可能会影响安装 cnpm 淘宝团队做的国内镜像 // 安装 cnpm npm install cnpm -g --registryhttps://registry.npm.taobao.org // 查看版本 cnpm -v // 查 npm 的源 npm config get registry一、cnpm -v 在 cmd 中能识别,但是 VsCode 无法识别…

使用RichTextBox控件实现系统剪切板功能

复制: 1 private void CopytoolStripMenuItem_Click(object sender, EventArgs e) 2 {//复制 3 try 4 { 5 this.Cursor Cursors.WaitCursor; 6 string strTemp richTextBoxSendInfo.SelectedT…

maven 父maven_Maven的鸟瞰图

maven 父maven我们每天要做的一件事是使用Maven通过发出诸如mvn install之类的构建命令来构建我们的项目。 然后,Maven查看我们项目的配置文件(亲切地称为POM),神奇地找出要执行的操作,并且,嘿,…

vue animation css实现左右折叠面板

<div class"left" :class"boxshow ? a1: a2" id"showBox">这里是折叠面板的内容 </div> <i id"left" class"el-icon-d-arrow-left" click"boxshow !boxshow" :class"boxshow ? a3: a4&quo…

mysql断网_断网的情况上如何访问本机的mysql

断网的情况下怎么访问本机的mysql我发现把网络断掉后mysql就不能访问了。使用phpmyadmin(http://localhost/phpmyadmin/index.php?)访问&#xff0c;输入用户名和密码后点击登陆&#xff0c;就会出现“#2002 Cannot log in to the MySQL server”错误。使用命令行登陆&#xf…

Py IO model

事件驱动模型 上节的问题&#xff1a; 协程&#xff1a;遇到IO操作就切换。 但什么时候切回去呢&#xff1f;怎么确定IO操作完了&#xff1f; 很多程序员可能会考虑使用“线程池”或“连接池”。“线程池”旨在减少创建和销毁线程的频率&#xff0c;其维持一定合理数量的线程&a…

Fiddler 扒取微信小程序的图片

安装 Fiddler http://www.downza.cn/soft/234727.html Tools-options配置 如果无法抓取到PC微信小程序 解决办法&#xff1a; 打开小程序&#xff0c;任务管理器找到小程序所在位置&#xff0c;删除文件内容 一般路径为\Tencent\WeChat\XPlugin\Plugins\WMPFRuntime 删除…

JLBH – Java延迟基准线束介绍

在这篇文章中&#xff1a; 什么是JLBH 我们为什么写JLBH JMH和JLBH之间的区别 快速入门指南 什么是JLBH&#xff1f; JLBH是可用于测量Java程序中的延迟的工具。 它具有以下功能&#xff1a; 旨在运行比微型基准测试更大的代码。 适用于使用异步活动&#xff08;如生产者…

mysql 5.7 mts_mysql5.7 中启用MTS后error log中大量Note日志分析

mysql5.7,启用基于logical_clock的多线程复制,发现error日志增长很快&#xff0c;查看日志发现大量关于多线程复制的Note级别日志。1234567891011121314152018-07-03T03:22:01.63837108:00 8941 [Note] Multi-threaded slave statistics for channel : seconds elapsed 298; e…

js比较数字相等

示例代码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8" /><title>js比较数字相等</title></head><body><script type"text/javascript">//设置误差范围值--机…

Nginx 怎么给一台服务器,配置两个域名?详细的解说+截图教程

一、 环境、条件准备 一台云服务器&#xff08;我的是腾讯的centos7&#xff09; 至少两个域名。&#xff08;我的是simuhunluo.xyz和simuhunluo.top。这两个域名之间没有任何关系&#xff0c;我是在阿里用两个账号分别注册的。&#xff09; 云服务器上面已经搭建了ngin…