关于UNIX DOMAIN SOCKET和普通udp socket的对比
在TX1(4核A57 1.7GHz)的板卡上进行测试,每个包大小设置为1024,全速收发,UDS的速度在90Mbps左右,UDP在120Mbps左右(略有丢包)
CPU占用率,UDS比UDP低10%,但是实际上,如果码率相近时,CPU占用率是差不多的
 
下面是UDP的CPU占用:
top - 08:44:46 up  3:04,  5 users,  load average: 1.78, 1.70, 1.66
Threads: 195 total, 3 running, 192 sleeping, 0 stopped, 0 zombie
%Cpu(s): 15.4 us, 31.3 sy, 0.0 ni, 51.3 id, 0.0 wa, 0.0 hi, 2.1 si, 0.0 st
KiB Mem : 4078676 total, 3061964 free, 399460 used, 617252 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 3180808 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1397 root -88 0 487920 156364 2100 R 65.9 3.8 2:04.03 udp_send
1396 root -91 0 487920 156364 2100 R 56.3 3.8 1:48.16 udp_recv
1395 root rt 0 487920 156364 2100 S 38.7 3.8 1:15.88 data_out
1398 root -81 0 487920 156364 2100 S 29.8 3.8 0:58.27 data_in
915 nvidia 20 0 9020 3280 2568 S 0.7 0.1 1:25.59 top
7 root 20 0 0 0 0 S 0.3 0.0 0:43.18 rcu_preempt
146 root rt 0 0 0 0 S 0.3 0.0 0:26.44 cfinteractive
327 systemd+ 20 0 77312 1952 1740 S 0.3 0.0 0:06.22 sd-resolve
1393 root 20 0 487920 156364 2100 S 0.3 3.8 0:01.00 test_udp.out
1400 admin 20 0 8932 3304 2632 R 0.3 0.1 0:00.07 top
1 root 20 0 7044 5452 3524 S 0.0 0.1 0:02.68 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 2:52.41 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_sched
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
10 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.22 watchdog/0

  

 这个是UDS的CPU占用率:

top - 08:45:22 up  3:05,  5 users,  load average: 1.64, 1.68, 1.65
Threads: 195 total, 1 running, 194 sleeping, 0 stopped, 0 zombie
%Cpu(s): 12.9 us, 28.2 sy, 0.0 ni, 58.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4078676 total, 3061868 free, 399532 used, 617276 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 3180712 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1406 root -88 0 487916 156400 2136 S 53.5 3.8 0:05.85 udp_send
1405 root -91 0 487916 156400 2136 S 41.6 3.8 0:04.57 udp_recv
1407 root -81 0 487916 156400 2136 S 34.0 3.8 0:03.77 data_in
1404 root rt 0 487916 156400 2136 S 29.7 3.8 0:03.24 data_out
915 nvidia 20 0 9020 3280 2568 S 0.7 0.1 1:25.79 top
1402 root 20 0 487916 156400 2136 S 0.7 3.8 0:00.41 test.out
146 root rt 0 0 0 0 S 0.3 0.0 0:26.49 cfinteractive
1400 admin 20 0 8932 3304 2632 R 0.3 0.1 0:00.27 top
1403 root rt 0 487916 156400 2136 S 0.3 3.8 0:00.01 trace_tsk
1 root 20 0 7044 5452 3524 S 0.0 0.1 0:02.68 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 2:52.41 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 0:43.20 rcu_preempt
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_sched
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
10 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.22 watchdog/0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.20 watchdog/1
13 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
14 root 20 0 0 0 0 S 0.0 0.0 0:00.29 ksoftirqd/1
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
17 root rt 0 0 0 0 S 0.0 0.0 0:00.21 watchdog/2
18 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/2
19 root 20 0 0 0 0 S 0.0 0.0 0:00.20 ksoftirqd/2
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/2:0H
22 root rt 0 0 0 0 S 0.0 0.0 0:00.22 watchdog/3
23 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/3
24 root 20 0 0 0 0 S 0.0 0.0 0:00.31 ksoftirqd/3
26 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/3:0H

  

理论上UDS不经过协议栈,不用计算校验和,但是为什么实际UDP速度还要快一些,那么UDS存在的价值在哪?

UNIX DOMAIN SOCKET效率的更多相关文章

  1. Unix domain socket 简介

    Unix domain socket 又叫 IPC(inter-process communication 进程间通信) socket,用于实现同一主机上的进程间通信.socket 原本是为网络通讯设 ...

  2. 【转】PHP实现系统编程(四)--- 本地套接字(Unix Domain Socket)

    原文:http://blog.csdn.net/zhang197093/article/details/78143687?locationNum=6&fps=1 --------------- ...

  3. (unix domain socket)使用udp发送>=128K的消息会报ENOBUFS的错误

    一个困扰我两天的问题, Google和Baidu没有找到解决方法! 此文为记录这个问题,并给出原因和解决方法. 1.Unix domain socket简介 unix域协议并不是一个实际的协议族,而是 ...

  4. 问题解决:psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

    错误提示: psql: could not connect to server: No such file or directory Is the server running locally and ...

  5. ndk学习16: unix domain socket

    一.UNIX Domain Socket 概念: UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC) 特点: 1. 它不需要经过网络协议栈,不需要 ...

  6. Unix Domain Socket 域套接字实现

    主要注意流程: STREAM SOCKET: Server :  socket() --->  bind() ---> listen()  ---> accept() Client: ...

  7. 由一个简单需求到Linux环境下的syslog、unix domain socket

    本文记录了因为一个简单的日志需求,继而对linux环境下syslog.rsyslog.unix domain socket的学习.本文关注使用层面,并不涉及rsyslog的实现原理,感兴趣的读者可以参 ...

  8. libpqxx接口的在linux下的使用,解决psql:connections on Unix domain socket "/tmp/.s.PGSQL.5432"错误

    在项目中使用postgresql数据库时要求在windows和linux双平台兼容.于是在windows下使用的接口在linux下爆出异常: psql:connections on Unix doma ...

  9. nginx、php-fpm默认配置与性能–TCP socket还是unix domain socket【转】

    原文地址:https://www.cnxct.com/default-configuration-and-performance-of-nginx-phpfpm-and-tcp-socket-or-u ...

随机推荐

  1. JS,JQ 格式化小数位数

    在<script>中: $(function(){ var num=$(".price").length;/*获取应用了class="price"的 ...

  2. 好代码是管出来的——使用Jenkins搭建CI服务器

    Jenkins是一个开源的跨平台的CI工具,它可以部署在Windows.Linux等平台上,并且Jenkins提供了非常丰富的插件来帮助完成编译.测试.部署等工作. 本文将介绍在Windows平台上使 ...

  3. 2018-2019-2 20164312 Exp1 PC平台逆向破解

    1.逆向及Bof基础实践说明 1.1 实践目标 实验对象:一个名为pwn1的linux可执行文件. 实验流程:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码 ...

  4. Intellij Idea 无法启动项目的配置坑

    1. run/debug configuration里面,tomcat的deployment点击添加不能自动创建war-explorded包: 方案:删除project libraries,重新mav ...

  5. MYSQL如何计算两个日期间隔天数

    如何透过MYSQL自带函数计算给定的两个日期的间隔天数   有两个途径可获得   1.利用TO_DAYS函数   select to_days(now()) - to_days('20120512') ...

  6. 1. 容器化部署一套云服务 第一讲 Jenkins(Docker + Jenkins + Yii2 + 云服务器))

    容器化部署一套云服务系列 1. 容器化部署一套云服务之Jenkins 一.购买服务器 服务器

  7. pandas的apply操作

    pandas的apply操作类似于Scala的udf一样方便,假设存在如下dataframe: id_part pred pred_class v_id 0 d [0.722817, 0.650064 ...

  8. Vue.js-05:第五章 - 计算属性与监听器

    一.前言 在 Vue 中,我们可以很方便的将数据使用插值表达式( Mustache 语法)的方式渲染到页面元素中,但是插值表达式的设计初衷是用于简单运算,即我们不应该对差值做过多的操作.当我们需要对差 ...

  9. springboot~Integer和int如何选择,Integer的意义何在

    今天说一下自己在项目中遇到的问题,然后总结一下Integer引用类型和int值类型 关于默认值 Integer默认为null int默认为0 为什么把数据实体设计成Integer或者不是int 大叔认 ...

  10. 卷积神经网络 CNN 学习笔记

    激活函数Relu 最近几年卷积神经网络中,激活函数往往不选择sigmoid或tanh函数,而是选择relu函数.Relu函数的定义 $$f(x)= max(0,x)$$ Relu函数图像如下图所示: ...