- 博客(107)
- 收藏
- 关注
转载 STM32 FATFS文件系统移植
http://www.360doc.com/content/11/1221/10/7736891_173820469.shtml转载于:https://www.cnblogs.com/kb342/p/7874860.html
2017-11-21 18:59:00
396
转载 dpdk中log的使用方法
1 log简介 dpdk中通过log系统记录相关的日志信息,每一条日志除日志内容外,还有两个附加信息,log级别和log类型。开发人员可根据级别和类型对日志信息进行过滤,只记录必要的日志。1.1 log级别 根据日志信息的优先级高低,dpdk将日志信息分为8个级别,其中RTE_LOG_DEBUG的值为8,这是日志的最高级别,也就是说记录的日志信息最多;相应的,RTE_LOG_...
2017-11-11 14:07:00
385
转载 (转)镜像的分层结构
Docker 支持通过扩展现有镜像,创建新的镜像。实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。比如我们现在构建一个新的镜像,Dockerfile 如下:① 新镜像不再是从 scratch 开始,而是直接在 Debian base 镜像上构建。② 安装 emacs 编辑器。③ 安装 apache2。④ 容器启动时运...
2017-10-11 13:50:00
348
转载 (转)Docker镜像中的base镜像理解
base 镜像有两层含义:不依赖其他镜像,从 scratch 构建。其他镜像可以之为基础进行扩展。所以,能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像,比如 Ubuntu, Debian, CentOS 等。我们以 CentOS 为例考察 base 镜像包含哪些内容。下载镜像:docker pull centos...
2017-10-11 11:11:00
242
转载 pthread_mutex_init函数与pthread_mutexattr_init函数
直接上英文解释:pthread_mutex_init()如下:NAMEpthread_mutex_init, pthread_mutex_destroy - initialise or destroy a mutexSYNOPSIS#include <pthread.h>int pthread_mutex_init(pthread_m...
2017-10-10 16:46:00
2387
转载 DPDK收发包全景分析
前言:DPDK收发包是基础核心模块,从网卡收到包到驱动把包拷贝到系统内存中,再到系统对这块数据包的内存管理,由于在处理过程中实现了零拷贝,数据包从接收到发送始终只有一份,对这个报文的管理在前面的mempool内存池中有过介绍。这篇主要介绍收发包的过程。一、收发包分解收发包过程大致可以分为2个部分1.收发包的配置和初始化,主要是配置收发队列等。2.数据包的获取和发送,主...
2017-07-04 13:59:00
211
转载 Linux Bond的原理及其不足
http://www.tektea.com/archives/1969.html.在企业及电信Linux服务器环境上,网络配置都会使用Bonding技术做网口硬件层面的冗余,防止单个网口应用的单点故障。Linux Bond的配置很简单,当下网络上也有很多资料,这里我们就不介绍了。我们在这篇文章中介绍Linux Bond的原理及其不足。原理Linux Bond有两种典型的模式:主备...
2017-04-18 09:54:00
193
转载 Cisco VPP启动流程
Cisco VPP启动流程,有需要的朋友可以参考一下。VPP初始化VLIB_INIT_FUNCTION用来定义构造函数,注册函数到vlib_main_t->init_function_registrations,这个链表在main()函数之前创建。vlib_main()->vlib_call_all_init_functions()注册的函数在这里被调用初始化,最...
2017-02-27 16:13:00
671
转载 组网基础之深入解析二层组播
二层组播相关协议包括IGMP和GMRP协议。让我们从分析组播MAC地址开始,逐步而深入的了解二层组播。组播MAC地址所谓组播MAC地址,是一类逻辑的MAC地址,该MAC地址代表一个组播组,所有属于该组的成员都接收以该组对应的组播MAC地址为目的地址的数据帧。注意的是,组播MAC地址是一个逻辑的MAC地址,也就是说,在网络上,没有一个设备的MAC地址是一个组播MAC地址。组播...
2017-02-24 10:42:00
343
转载 vpp命令总结
create sub BondEthernet0 834创建子接口,tag是834set interface ip table BondEthernet0.834 1将此接口设置在fib 1里set interface ip address BondEthernet0.834 192.168.0.250/24设置接口ipset ...
2017-02-21 17:02:00
244
转载 内核态和用户态的区别
http://blog.youkuaiyun.com/fatsandwich/article/details/2131707#http://jakielong.iteye.com/blog/771663当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当...
2017-02-17 10:28:00
118
转载 【Docker官方文档】理解Docker
本文来自Docker的官方文档,详细介绍了Docker的体系结构、重要概念、内部工作机理等内容,推荐不了解Docker内部原理的同学阅读。什么是Docker?Docker是一个用于开发、交付和运行应用的开放平台,Docker设计用来更快的交付你的应用程序。 Docker可以将你的应用程序和基础设施层隔离,并且还可以将你的基础设施当作程序一样进行管理。Docker可以帮助你更块...
2017-02-04 11:51:00
148
转载 dpdk中kni模块
一,什么是kni,为什么要有kni Kni(Kernel NIC Interface)内核网卡接口,是DPDK允许用户态和内核态交换报文的解决方案,模拟了一个虚拟的网口,提供dpdk的应用程序和linux内核之间通讯。kni接口允许报文从用户态接收后转发到linu协议栈去。 为什么要弄一个kni接口,虽然dpdk的高速转发性能很出色,但是也有自己的一些缺点,比如没...
2016-11-05 14:52:00
878
转载 linux的deamon后台运行
有的时候需要将程序一直跑在后台,比如一些服务类代码,或者一些监控类代码。使用deamon是正确的一种思路。以前我们在看《unix环境高级编程》的时候,有专门的整章详细介绍如何编写一个后台daemon程序(精灵程序),主要涉及到创建会话组,切换工 作目录,设置文件屏蔽字,关闭不必要的描述符等多个操作。这些操作对于每一个后台程序来说都是类似的。在Linux中专门提供了一个函数来完成这个d...
2016-10-17 10:30:00
165
转载 在C语言中如何嵌入python脚本
最近在写配置文件时,需要使用python脚本,但脚本是一个监控作用,需要它一直驻留在linux中运行,想起C语言中能够使用deamon函数来保留一个程序一直运行,于是想到写一个deamon,并在其中嵌入python脚本。上网查一下,发现确实有办法做到,下面亲测有效:#include <Python.h>#include <stdio.h>...
2016-10-17 10:26:00
750
转载 Docker学习之路(三)Docker网络详解
1. Docker的4种网络模式我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式:host模式,使用--net=host指定。container模式,使用--net=container:NAME_or_ID指定。none模式,使用--net=none指定。bridge模式,使用--net=...
2016-08-23 14:40:00
1563
转载 Docker学习之路(二)DockerFile详解
Dockerfile是一个镜像的表示,可以通过Dockerfile来描述构建镜像的步骤,并自动构建一个容器所有的 Dockerfile 命令格式都是:INSTRUCTION arguments虽然指令忽略大小写,但是建议使用大写。FROM 命令FROM <image>或FROM <image>:<tag...
2016-08-23 14:28:00
97
转载 fopencookie函数详解
今天看DPDK时,看到了fopencookie函数,以前基本没有用过该函数,乘此机会好好看看如何使用。1. 函数头文件与函数原型函数头文件: #include <stdio.h>函数原型:FILE *fopencookie(void *cookie, const char *mode, cookie_io_functions_t io_funcs...
2016-08-15 14:41:00
271
转载 Docker学习之路(一)
容器简介管理程序虚拟化(hypervisor virtualization, HV)是通过中间虚拟运行于物理硬件之上。而容器是直接运行在操作系统内核之上用户空间。因此,容器虚拟化运行也成为“操作系统级虚拟化”,容器技术可以让多个独立的用户空间运行在同一台宿主机上。容器只能运行与底层宿主机相同或类似的操作系统。例如,可以在 Ubuntu 服务器中运行 RedHat Enterpri...
2016-07-22 11:32:00
84
转载 C/C++代码覆盖率工具gcov、lcov
gcov是一个可用于C/C++的代码覆盖工具,是gcc的内建工具。下面介绍一下如何利用gcov来收集代码覆盖信息。想要用gcov收集代码覆盖信息,需要在gcc编译代码的时候加上这2个选项 “-fprofile-arcs -ftest-coverage”,把这个简单的程序编译一下gcc -fprofile-arcs -ftest-coverage hello.c -o hell...
2016-07-04 10:42:00
287
转载 举例详解Python中的split()函数的使用方法
这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列表,需要的朋友可以参考下函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(lis...
2016-06-12 16:07:00
242
转载 scp指定端口的方法
scp -P 10000 xxx.tar.gz root@xxx:/home/转载于:https://www.cnblogs.com/kb342/p/5566939.html
2016-06-07 14:48:00
1377
转载 linux下每次git clone不需输入账号密码的方法
在~/下, touch创建文件 .git-credentials, 用vim编辑此文件,输入内容格式:ame@zhenyun~ $touch .git-credentialsame@zhenyun~ $vim .git-credentials在里面按“i”然后输入:https://{username}:{password}@github.com比如 https://a...
2016-06-07 14:09:00
1182
转载 docker学习(2)基本命令
原文地址:http://blog.youkuaiyun.com/we_shell/article/details/383681371. 查看docker信息(version、info)# 查看docker版本 $docker version # 显示docker系统的信息 $docker info 2. 对image的操作(search、pull、im...
2016-05-23 10:13:00
63
转载 docker学习(1)docker的安装
原文地址:http://blog.youkuaiyun.com/we_shell/article/details/383528371. 前言Docker的英文本意是“搬运工”,在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的、可移植的、自管理的组件,可以在任何主流系统中开发、调试和运行。...
2016-05-23 10:08:00
94
转载 一篇docker的详细技术文章
http://www.open-open.com/lib/view/open1423703640748.html转载于:https://www.cnblogs.com/kb342/p/5512686.html
2016-05-20 16:47:00
81
转载 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决方法
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决方法这几天都这整linux集群,在做测试 Marking Packets with iptables 时遇到一个问题,想通过博客的形式记录此错误具体如下:当ssh 10.1.1.61时出现一下情况:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...
2016-05-04 16:33:00
74
转载 Python yield 使用浅析
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?我们先抛开 generator,以一个常见的编程题目来展示 yield 的概念。如何生成斐波那契數列斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前 N...
2016-04-22 13:38:00
56
转载 python的argparse模块
一、简介:argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数,例如python parseTest.py input.txt output.txt --user=name --port=8080。二、使用步骤:1:import argparse2:parser = arg...
2016-04-21 09:58:00
59
转载 python标准日志模块logging的使用方法
最近在学习python在web上的应用,根据廖雪峰教程来跟进。代码如下import logging; logging.basicConfig(level=logging.INFO)import asyncio, os, json, timefrom datetime import datetimefrom aiohttp import webdef i...
2016-03-10 09:34:00
105
转载 (转)Linux网络协议栈(三)——网络设备(1)
网络设备(network device)是内核对网络适配器(硬件)的抽象与封装,并为各个协议实例提供统一的接口,它是硬件与内核的接口,它有两个特征:(1) 作为基于硬件的网络适配器与基于软件的协议之间的接口;(2) 内核协议栈异步输入输出点。记住:网络设备软件对硬件的抽象网络设备与协议和网络适配器的关系如下:1、 net_device接口(net_device Inte...
2016-02-25 15:02:00
113
转载 dpdk中uio技术
总结一下dpdk的uio技术一:什么是uio技术UIO(Userspace I/O)是运行在用户空间的I/O技术,Linux系统中一般的驱动设备都是运行在内核空间,而在用户空间用应用程序调用即可,而UIO则是将驱动的很少一部分运行在内核空间,而在用户空间实现驱动的绝大多数功能!使用UIO可以避免设备的驱动程序需要随着内核的更新而更新的问题。工作原理图:从图中可以看出,...
2016-01-29 10:29:00
949
转载 __attribute__((packed))详解
1.__attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:在TC下:struct my{ char ch; int a;} sizeof...
2016-01-13 16:41:00
111
转载 python中if __name__ == '__main__': 的解析
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个...
2016-01-11 13:39:00
55
转载 CPPUTest 单元测试框架(针对 C 单元测试的使用说明)
CPPUTest 虽然名称上看起来是 C++ 的单元测试框架, 其实它也是支持测试 C 代码的.本文主要介绍用CPPUTest来测试 C 代码. (C++没用过, 平时主要用的是C) C++相关的内容都省略了.本文基于 debian v7.6 x86_64.1. CPPUTest 安装现在各个Linux的发行版的源都有丰富的软件资源, 而且安装方便.但是如果想要...
2016-01-06 10:26:00
604
转载 哈希表详解
最近在做负荷分担的优化,将数据流均匀分到八条流中,学习点哈希算法什么是哈希表? 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。说白了哈希表的原理其实就是通过空间换取时间的做法。。 哈希...
2015-12-28 09:51:00
105
转载 使用RSS提升DPDK应用的性能(转)
本文描述了RSS以及在DPDK中如何配置RSS达到性能提升和统一分发。什么是RSSRSS(Receive Side Scaling)是一种能够在多处理器系统下使接收报文在多个CPU之间高效分发的网卡驱动技术。网卡对接收到的报文进行解析,获取IP地址、协议和端口五元组信息网卡通过配置的HASH函数根据五元组信息计算出HASH值,也可以根据二、三或四元组进行计算。取H...
2015-12-21 10:57:00
197
转载 DPDK内存管理-----rte_mbuf(转)
本文主要介绍rte_mbuf与rte_mempool数据结构之间的组织关系、以及网卡接收到的数据是如何存储在rte_mbuf中的。一、rte_mbuf、rte_mempool及网卡收到的数据包在内存中的组织结构调用rte_mempool_create()函数创建rte_mempool的时候,指定申请多少个rte_mbuff及每个rte_mbuf中elt_size的大小。elt...
2015-12-17 15:54:00
181
转载 DPDK内存管理-----(二)rte_mempool内存管理
DPDK以两种方式对外提供内存管理方法,一个是rte_mempool,主要用于网卡数据包的收发;一个是rte_malloc,主要为应用程序提供内存使用接口。本文讨论rte_mempool。rte_mempool由函数rte_mempool_create()负责创建,从rte_config.mem_config->free_memseg[]中取出合适大小的内存,放到rte_confi...
2015-12-17 15:22:00
420
转载 DPDK内存管理(1)(转)
1 前言DPDK将利用hugepage预留的物理内存统一的组织管理起来,然后以库的方式对外提供使用的接口。下图展示了DPDK中内存有关的模块的相互关系。rte_eal 是统一的组织管理者(当然rte_eal不只是做内存的工作)rte_malloc 对外提供分配释放内存的API,分配的内存都是rte_eal中管理的内存rte_ring...
2015-12-17 15:07:00
102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人