小编Dol*_*lyg的帖子

PTP(精确时间协议)硬件时间戳精度测量的差异

我们正在分析用于控制系统软件的 PTP,并使用 2 台个人计算机的小型设置来测量 PTP 时钟同步的准确性,其中一台作为主机,另一台作为从机。我们目前的设置非常粗糙,我们还没有特级大师。问题是我们的准确度数字(正如我们目前测量的那样,可能不正确)与 PTP 协议声称的标准数字不匹配,并且变化幅度为 10。

作为分析的一部分,我们正在尝试硬件和软件时间戳,并尝试衡量两者的准确性。

我们正在使用 ptp4l 和 ph2sys v1.8 工具。我们当前的准确度测量基于 ptp4l 进程报告的主从偏移。(ptp4l 还报告路径延迟,我们目前不使用这些数字。这些数字在精度测量中是否有任何意义?)

在硬件时间戳中,我们从主设备获得了 >1000 纳秒的偏移量,这远大于 PTP H/W 时间戳约 50 ns 的预期值。

硬件时间戳偏移

对于软件时间戳,我们从主设备获得预期的偏移量 <100 ?s。 软件时间戳偏移

设置和执行的详细信息:

主控: Dell Latitude E6220(Intel 82579LM 千兆以太网控制器)- CentOS7

从机: Dell Latitude E6320(Intel 82579LM 千兆以太网控制器)- CentOS7

网络:速度为 1 GBPS 的以太网电缆

Ethtool 输出:

能力:

hardware-transmit     (SOF_TIMESTAMPING_TX_HARDWARE)

software-transmit     (SOF_TIMESTAMPING_TX_SOFTWARE)

hardware-receive      (SOF_TIMESTAMPING_RX_HARDWARE)

software-receive      (SOF_TIMESTAMPING_RX_SOFTWARE)

software-system-clock (SOF_TIMESTAMPING_SOFTWARE)

hardware-raw-clock    (SOF_TIMESTAMPING_RAW_HARDWARE)
Run Code Online (Sandbox Code Playgroud)

PTP 硬件时钟:0

硬件传输时间戳模式:

off                   (HWTSTAMP_TX_OFF)

on                    (HWTSTAMP_TX_ON)
Run Code Online (Sandbox Code Playgroud)

硬件接收过滤器模式:

none                  (HWTSTAMP_FILTER_NONE)

all                   (HWTSTAMP_FILTER_ALL)

ptpv1-l4-sync         (HWTSTAMP_FILTER_PTP_V1_L4_SYNC) …
Run Code Online (Sandbox Code Playgroud)

time measurement ieee ptp

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

Redis PubSub Lettuce:如何处理背压?

我们正在使用RedisPubSubReactiveCommands并调用Lettuce 的subscribeobserveChannels方法。

\n\n

如果发布者速度快而订阅者速度慢,则如何处理背压?\n由于发布者和订阅者在 Redis 中是独立的,因此无法减慢生产者的速度。鉴于这一事实,以下哪种理解是正确的?

\n\n
    \n
  1. 数据是否会在应用程序端被丢弃(生菜会丢弃它),具体取决于 所OverflowStrategy采取的方式observeChannels? \n如果是这种情况,则效率非常低,因为数据从 Redis 服务器一路传输到应用程序,从而产生不必要的网络流量。

  2. \n
  3. Lettuce是否向客户端的TCP层传递反压,那么应用程序\xe2\x80\x99不会收到任何东西,但TCP缓冲区将满。看看这个Github 提交,这似乎是实现。\n但我不明白的是,OverflowStrategy提供的内容做了什么?

  4. \n
  5. 是否将背压一路传递到Redis服务器,从而减少网络流量。在我看来,这是最有效的解决方案。\n我不\xe2\x80\x99不认为这是Redis/Lettuce的行为。不这样的原因可能是什么?

  6. \n
\n\n

任何人都可以帮助我们形成正确的理解吗?

\n

publish-subscribe redis lettuce backpressure reactive

5
推荐指数
0
解决办法
706
查看次数

TCP连接如何由kafka-clients scala库管理?

我正在使用kafka-clients库来集成Kafka和Scala应用程序.并且发现很难理解,如何以及何时在经纪人和生产者/消费者之间建立TCP连接.

请核实我对以下几点的理解 -

(1)在初始化KafkaProducer实例时没有建立TCP连接.

val producer = new KafkaProducer[String, String](properties)
Run Code Online (Sandbox Code Playgroud)

对于KafkaConsumer来说也是如此.

val consumer = new KafkaConsumer[String, String](properties)
Run Code Online (Sandbox Code Playgroud)

(2)在向Broker生成记录时建立第一个TCP连接(Broker和Producer之间).

producer.send(record1)
Run Code Online (Sandbox Code Playgroud)

(3)send()从同一个Producer到同一个Broker的后续调用将共享相同的TCP连接,而不管主题如何.

producer.send(record2)
Run Code Online (Sandbox Code Playgroud)

(4)对于Consumer,在轮询主题(而不是订阅)时建立第一个TCP连接.

val records = consumer.poll(timeout)
Run Code Online (Sandbox Code Playgroud)

(5)同一个消费者对同一个Broker的后续调用共享相同的连接.

tcp scala apache-kafka

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