ring

ethtool 解决网卡丢包严重和网卡原理【转】

泪湿孤枕 提交于 2020-05-02 04:59:10
转自:https://blog.csdn.net/u011857683/article/details/83758869 1 概述 最近业务上老有问题,查看发现overruns值不断增加,学习了一下相关的知识。发现数值也在不停的增加。发现这些 errors, dropped, overruns 表示的含义还不大一样。 [root@localhost ~ ]# ifconfig eth0 eth0: flags = 4163 <UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168 . 1.135 netmask 255.255 . 255.0 broadcast 192.168 . 1.255 inet6 fe80::20c:29ff:fe9b:52d3 prefixlen 64 scopeid 0x20 <link> ether 00 :0c: 29 :9b: 52 :d3 txqueuelen 1000 (Ethernet) RX packets 833 bytes 61846 ( 60.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 122 bytes 9028 ( 8.8 KiB) TX errors 0 dropped 0 overruns 0

ethtool 解决网卡丢包严重和网卡原理

偶尔善良 提交于 2020-05-02 04:50:29
1 概述 最近业务上老有问题,查看发现overruns值不断增加,学习了一下相关的知识。发现数值也在不停的增加。发现这些 errors, dropped, overruns 表示的含义还不大一样。 [root@localhost ~ ]# ifconfig eth0 eth0: flags = 4163 <UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168 . 1.135 netmask 255.255 . 255.0 broadcast 192.168 . 1.255 inet6 fe80::20c:29ff:fe9b:52d3 prefixlen 64 scopeid 0x20 <link> ether 00 :0c: 29 :9b: 52 :d3 txqueuelen 1000 (Ethernet) RX packets 833 bytes 61846 ( 60.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 122 bytes 9028 ( 8.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 (1) RX errors 表示总的收包的错误数量,这包括 too-long

使用无锁队列(环形缓冲区)注意事项

自作多情 提交于 2020-05-01 07:26:57
环形缓冲区是生产者和消费者模型中常用的数据结构。生产者将数据放入数组的尾端,而消费者从数组的另一端移走数据,当达到数组的尾部时,生产者绕回到数组的头部。如果只有一个生产者和一个消费者,那么就可以做到免锁访问环形缓冲区(Ring Buffer)。写入索引只允许生产者访问并修改,只要写入者在更新索引之前将新的值保存到缓冲区中,则读者将始终看到一致的数据结构。同理,读取索引也只允许消费者访问并修改。 环形缓冲区实现原理图 如图所示,当读者和写者指针相等时,表明缓冲区是空的,而只要写入指针在读取指针后面时,表明缓冲区已满。 清单 9. 2.6.10 环形缓冲区实现代码 /* * __kfifo_put - puts some data into the FIFO, no locking version * Note that with only one concurrent reader and one concurrent * writer, you don't need extra locking to use these functions. */ unsigned int __kfifo_put(struct kfifo *fifo, unsigned char *buffer, unsigned int len) { unsigned int l; len = min(len,

推荐有关网络的书籍

烈酒焚心 提交于 2020-04-30 20:01:26
http://linux.vbird.org/linux_basic/0120howtolinux/0120howtolinux_1.php 一﹐先看如下兩本﹕ > 《精通區域網路》(Mastering Local Area Network) 儒林 (SYBEX) 翻譯出版 > 《TCP/IP 通訊協定入門與應用》博碩文化出版 這裡﹐基本上要能蓋起書本回答如下問題﹕ > 1) 什麼是網路﹖(LAN/WAN/MAN/Internet) > 2) 有哪些 Topologies﹖(BUS/Star/Ring) > 3) Network Media 有哪些﹖(Coaxial, UTP/STP, FiberOptic, Wireless, etc.) > 4) Major NOS (Network Operating System) > 5) Peer-to-Peer 和 Client/Server > 6) Protocol Binding 概念 (Netbios, TCP/IP, IPX/SPX) > 7) OSI Layer 基本概念 > 8) Encapsulation / Decapsulation 概念 > 9) BaseBand / BroadBand communication ( TDM / FDM ) > 10) CSMACD / Token Bus / Token

《庖丁解牛Linuxn内核分析》 部分摘录和笔记

霸气de小男生 提交于 2020-04-29 03:18:12
第2章 计算机的3个法宝:存储程序计算机、函数调用堆栈机制、中断 堆栈的具体作用有: 记录程序调用框架 传递函数参数 保存返回值地址 提供函数内部局部变量的存储空间 操作系统有2把宝剑:中断上下文、进程上下文 第3章 start_kernel中的最后一句为rest_init,内核启动完成后,有一个call_cpu_idle,当系统没有进程需要执行时就调用idle进程。 start_kernel()相当于C语言中的main函数,start_kernel是一切的起点,在此函数被调用前,内核代码主要是用汇编语言写的,用于完成硬件系统的初始化工作。该函数几乎涉及了内核的所有主要模块,如:trap_init()(中断向量的初始化),mm_init()(内存管理的初始化),sched_init()(调度模块的初始化)。 init_task是使用宏初始化的,这是0号进程,是唯一没有通过fork方式产生的进程。而kernel_init已经是通过kernel_thread()函数fork出一个新的进程来执行了,这是1号内核线程。 调用kernel_thread执行kthreadd,创建PID为2的内核线程。kthreadd()的任务是管理和调度其他内核线程kernel_thread,所有的内核线程都是直接或者间接地以kthreadd为父进程的。 第4章 Inter x86 CPU有4种不同的执行级别

Autoware 培训笔记 No. 4——寻迹

天涯浪子 提交于 2020-04-27 22:25:17
1. 前言 好多初创公司公布出来的视频明显都是寻迹的效果,不是说寻迹不好,相反可以证明,寻迹是自动技术开始的第一步。 自动驾驶寻迹:一种能够自动按照给定的路线(通常是采用不同颜色或者其他信号标记来引导)进行移动的汽车。 本章内容有和No. 1、No. 2与No. 3重复的内容,为了方便自己调试,我将重复的内容也贴出来。 注意: 所有需要在 [Simulation] 菜单下加载的数据,都需要在所有操作之前操作,否则在RViz显示时,会出现frame_id错误。 采用寻迹方式,首先要做的就是要确定汽车离航迹点集上的那个点最近,然后通过control算法将车辆移动到该航迹点上。所以寻迹寻迹方法最核心的操作同样是定位。 本节寻迹我们同样仿真数据与真车实测两个方式来介绍 2. 仿真数据寻迹 2.1 打开runtime manager 2.2 打开地图要定位的数据(在百度网盘中有,这是我们录制的用于定位的数据) 进入 [Simulaton] 页面,点击界面右上方 [Ref] 按钮,加载录制用于定位的 bag 文件。 点击 [Play] 然后点击 [Pause]暂停。 2.3 加载地图,加载world到map以及base_link到velodyne的TF变化 (1) 设置从base_link到velodyne坐标系的TF (与No. 1重复) 在 [Setup] 菜单中,确保

虚拟化、CPU虚拟化、内存虚拟化、设备和I/O虚拟化

自作多情 提交于 2020-04-27 19:02:10
对于业界标准的x86系统,虚拟化采取 hosted 或者 hypervisor架构 。 hosted架构 将虚拟化层以一个应用程序的方式安装 运行于操作系统之上 ,支持最为广泛的各种硬件配置。 hypervisor(裸金属) 架构将虚拟化层 直接安装到干净的x86系统上 ,由于它不需要通过操作系统而直接访问硬件,hypervisor架构相对于hosted架构效率更高,且具有更好的可扩展性、健壮性和性能。 VMware Player, ACE, Workstation 和Server使用了 hosted架构 的便捷性, 而 ESX server针对已认证的硬件采用 hypervisor架构 以达到数据中心级别的性能。 x86操作系统被设计成直接运行在硬件上,自然这些系统会认为它们拥有硬件的全部控制权。 x86架构为操作系统和应用程序提供了四个不同级别的权限来管理对硬件的访问,分别为ring 0,1,2和3。 用户程序一般运行在ring 3,操作系统需要直接访问内存和硬件,因此需要在ring 0执行它的特权指令。 x86架构的虚拟化需要在操作系统(运行于最高权限的ring 0)之下放置一个提供共享资源的虚拟化层来创建和管理虚拟机。VMware在1998年就攻克了这个挑战,开发了 二进制翻译技术 使得 VMM运行在ring 0 以达到隔离和性能的要求

深度解密 Go 语言之 sync.Pool

倾然丶 夕夏残阳落幕 提交于 2020-04-27 15:23:40
最近在工作中碰到了 GC 的问题:项目中大量重复地创建许多对象,造成 GC 的工作量巨大,CPU 频繁掉底。准备使用 sync.Pool 来缓存对象,减轻 GC 的消耗。为了用起来更顺畅,我特地研究了一番,形成此文。本文从使用到源码解析,循序渐进,一一道来。 本文基于 Go 1.14 目录 是什么 有什么用 怎么用 简单的例子 fmt 包如何用 pool_test 其他 源码分析 Pool 结构体 Get pin popHead getSlow popTail Put pushHead pack/unpack GC 总结 参考资料 是什么 sync.Pool 是 sync 包下的一个组件,可以作为保存临时取还对象的一个“池子”。个人觉得它的名字有一定的误导性,因为 Pool 里装的对象可以被无通知地被回收,可能 sync.Cache 是一个更合适的名字。 有什么用 对于很多需要重复分配、回收内存的地方, sync.Pool 是一个很好的选择。频繁地分配、回收内存会给 GC 带来一定的负担,严重的时候会引起 CPU 的毛刺,而 sync.Pool 可以将暂时不用的对象缓存起来,待下次需要的时候直接使用,不用再次经过内存分配,复用对象的内存,减轻 GC 的压力,提升系统的性能。 怎么用 首先, sync.Pool 是协程安全的,这对于使用者来说是极其方便的。使用前,设置好对象的 New

CentOS7.4安装部署openstack [Liberty版] (二)

左心房为你撑大大i 提交于 2020-04-27 14:03:28
继上一篇博客 CentOS7.4安装部署openstack [Liberty版] (一) ,本篇继续讲述后续部分的内容 一、添加块设备存储服务 1.服务简述: OpenStack块存储服务为实例提供块存储。存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的。还有很多驱动程序可用:NAS/ SAN,NFS,ISCSI,Ceph等等。块存储API和调度程序服务通常运行在控制节点上。取决于所使用的驱动程序,卷服务可以运行在控制,计算节点或者独立的存储节点上。 OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷。此服务也会激活管理卷的快照和卷类型的功能。 块存储服务通常包含下列组件: cinder - api   接受API请求,并将其路由到"cinder - volume"执行。 cinder - volume   与块存储服务和例如"cinder -scheduler"的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。"cinder- volume"服务响应送到块存储服务的读写请求来维持状态。它也可以和多种存储提供者在驱动架构下进行交互。 cinder - scheduler守护进程   选择最优存储提供节点来创建卷。其与"nova - scheduler

深度:一文看懂Linux内核!Linux内核架构和工作原理详解(转)

非 Y 不嫁゛ 提交于 2020-04-25 05:36:32
原文链接 http://www.openpcba.com/web/contents/get?id=4638&tid=15 简介 作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。virt/ ---- 提供虚拟机技术的支持。 全文导读 Linux内核预备工作 Linux内核体系结构简析简析 Linux体系结构和内核结构区别 Linux驱动的platform机制 Linux内核体系结构 内核模块 Linux 内核学习经验总结 结尾 Linux内核预备工作 理解Linux内核最好预备的知识点: 懂C语言 懂一点操作系统的知识 熟悉少量相关算法 懂计算机体系结构 Linux内核的特点: 结合了unix操作系统的一些基础概念 Linux内核的任务: 1.从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。 2.从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层