小编Ted*_*ham的帖子

访问各种缓存和主内存的近似成本?

任何人都可以给我大概的时间(以纳秒为单位)来访问L1,L2和L3缓存,以及Intel i7处理器上的主内存吗?

虽然这不是一个特别的编程问题,但是对于某些低延迟编程挑战而言,了解这些速度细节是必要的.

memory latency low-latency cpu-cache

167
推荐指数
5
解决办法
8万
查看次数

垃圾收集通知?

我想在JVM上注册一个回调,所以我知道垃圾收集何时发生.有没有办法做到这一点?

编辑:我想这样做,所以我可以在我的应用程序日志中发生垃圾收集时注销,所以我可以看到它是否与我看到的问题相关.打开-Xloggc很有帮助,但是将GC日志(自应用程序启动以来使用秒数)的时间集成到我的主应用程序日志中有点棘手.

编辑2012年4月:从Java7u4开始,您可以从GarbageCollectorMXBean获取通知(一个很好的例子).

java garbage-collection

35
推荐指数
3
解决办法
2万
查看次数

部署低延迟Java应用程序的最佳操作系统?

我们有一个用Java编写的低延迟交易系统(Feed处理程序,分析,订单输入).它广泛使用TCP和UDP,它不使用Infiniband或其他非标准网络.

有人可以评论各种操作系统或操作系统配置的权衡来部署这个系统吗?虽然吞吐量对于跟上现代价格源非常重要,但延迟是我们的首要任务.

Solaris似乎是一个自然的候选者,因为他们创建了Java; 我应该使用Sparc还是x64处理器?

我听说过关于RHEL和SLERT的好东西,是那些在我们的基准测试中使用的Linux版本.

有没有人针对上述操作系统测试过Windows?还是假设跟不上?

我想将Java与C++争论留给另一个线程.

java performance operating-system latency

14
推荐指数
2
解决办法
4559
查看次数

确定最有争议的锁?

我们的应用程序有~10个线程执行单独的任务(没有线程池).我们没有遇到死锁,但总是试图降低响应请求的延迟,因此我们有兴趣确定哪些锁是最有争议的.jconsole显示了线程被阻塞的频率,并且不常见,但我们仍然想知道哪些锁是最有争议的.

我们正在使用Sun JVM运行,因此来自IBM的JLA没用,我们没有在Solaris上运行,所以我们不能使用dTrace.

编辑:我想在制作中进行这种观察,其中探查器会使应用程序变得无法接受.这是一个交易系统,如果我们很慢,我们会亏钱,所以我们不会在生产中运行分析器.在性能测试中模拟我们交谈的许多交换也很困难.

java multithreading

8
推荐指数
2
解决办法
285
查看次数

多播发送性能

我们最近完成了对组播发送性能的分析.令人高兴的是,Java和C几乎完全相同,因为我们在Windows和Solaris上测试了不同的流量发送速率.

但是,我们注意到发送多播消息的时间随着发送之间的时间的增加而增加.我们调用发送的频率越高,完成发送呼叫所需的时间就越少.

该应用程序让我们控制在调用发送之间等待的时间,低于您看到的时间随着数据包之间的延迟增加而增加.当发送1000个包/秒(1毫秒等待时间)时,调用发送只需要13微秒.在1包/秒(1000毫秒等待时间)下,该时间增加到20微秒.

Wait time (ms)                      us to send
0                                   8.67   
1                                   12.97  
10                                  13.06  
100                                 18.03  
1000                                20.82
10000                               57.20  
Run Code Online (Sandbox Code Playgroud)

我们从Java和C以及Windows和Solaris上都看到了这种现象.我们正在使用Intel Pro 1000双端口网卡在戴尔1950服务器上进行测试.微基准测试很难,特别是在Java中,但我们认为这与JITing或GC无关.

我用于测试的Java代码和命令行位于:http://www.moneyandsoftware.com/2009/09/18/multicast-send-performance/

c java performance networking multicast

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

对已编译的jar进行简单的性能修改?

与许多log4j用户一样,我们经常进行调试级别日志记录,评估成本很高.所以我们使用以下代码保护这些案例:

if( _logger.isDebugEnabled )
  _logger.debug("Interesting, my foojes are goofed up: " + getFullDetails())
Run Code Online (Sandbox Code Playgroud)

然而,这比普通的_logger.debug调用更难,有时程序员没有意识到评估可能很昂贵.

编写一个带有编译jar的程序并使用isDebugEnabled检查保护所有_logger.debug调用似乎应该相当简单.我们可能愿意接受在所有情况下检查isDebugEnabled的额外开销.

有没有人尝试过这种方法,或者对jar进行类似的后期处理?

java performance jar

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

在log4j日志记录中包含微秒时间戳?

在log4j日志记录中是否可以有微秒级别的时间戳?这是在Linux上运行Java 1.6.

我们有几个服务器紧挨着(通过LAN同步到同一个NTP服务器),我想在日志行中有微秒.

如果log4j不提供此功能,是否会进行回退?

log4j logback

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

使用TCP Ack来测量服务器的延迟?

我正在尝试测量我无法控制的服务器的延迟.这是在共同定位的环境中,因此延迟大约为500 us(.5 ms).

据我所知,思科设备经常优先考虑ICMP流量,使ping时间不可靠.有没有办法让我知道我正在穿越的装备是否就是这种情况?

我可以使用TCP确认来确定远程服务器的最小延迟吗?为此,我会以某种方式强制远程服务器在接收我的数据时立即发送TCP确认.

performance tcp latency low-latency

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

Java中有10个以太网?

Java 6是否支持开箱即用的10 gig以太网?

它似乎不应该要求Java更改,但我想我记得Java 7正在增加10个gig支持.

java networking ethernet

3
推荐指数
2
解决办法
451
查看次数

在Java中以原子方式释放多个锁

如果我已经获得了许多锁,我如何原子地释放锁定集?

java locking

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