我心知度

TitenWang's Blog


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Lua中的值及其类型

发表于 2019-06-03 | 分类于 Lua

  Lua是一门动态类型的语言,这意味着Lua中的变量没有类型,而值才有类型。一个变量可以在不同时刻指向不同类型的值。下面将对Lua中的值及其类型做一些总结。

阅读全文 »

epoll的原理和实现

发表于 2017-10-05 | 更新于 2019-05-29 | 分类于 eBPF

  epoll是Linux内核为处理大批量文件描述符而设计的IO多路复用机制,它能显著提高程序在存在大量并发连接而只有少部分活跃连接情况下的系统CPU利用率。epoll之所以可以做到如此高的效率是因为它在获取就绪事件的时候,并不会遍历所有被监听的文件描述符集,而只会遍历那些被设备IO事件异步唤醒而加入就绪链表的文件描述符集。

阅读全文 »

Linux中rps/rfs的原理及实现

发表于 2017-07-09 | 更新于 2019-05-29 | 分类于 eBPF

  rps的全称是Receive Package Steering,rfs的全称是Receive Flow Steering,rps和rfs是google的工程师提供的两个补丁,用以在软件层面实现报文在多个cpu之间的负载均衡以及提高报文处理的缓存命中率。rps和rfs出现的原因主要有以下两个:
  1、 对于多队列网卡,网卡硬件接收队列与cpu核数在数量上不匹配导致报文在cpu之间分配不均。
  2、 对于单队列网卡,rps和rfs可以在软件层面将报文平均分配到多个cpu上。

阅读全文 »

基于82599网卡的二层网络数据包发送

发表于 2017-05-01 | 更新于 2019-05-29 | 分类于 eBPF

  这篇文档主要介绍了网络数据包在二层的发送流程。网络数据包在二层的发送主要包括了网络设备层和驱动层两个部分,所以下面将会从这两个方面讲述报文在二层的发送流程。

阅读全文 »

基于82599网卡的二层网络数据包接收

发表于 2017-04-16 | 更新于 2019-05-29 | 分类于 eBPF

  本篇文档主要描述了网络数据包在二层的接收流程,主要包括以下三个部分:
  1)、82599网卡和数据包接收相关的内容;
  2)、ixgbe网卡驱动数据包接收相关的配置;
  3)、ixgbe网卡驱动napi接口的处理。

阅读全文 »

eBPF中的map

发表于 2017-03-26 | 更新于 2019-05-29 | 分类于 eBPF

  map是一个通用的key-value存储结构,可以用来存储任意类型的数据。map在eBPF中扮演这十分重要的角色,这个文档将会介绍eBPF目前支持的map类型,以及某一类型map的实现细节。
  在eBPF中可以利用map在eBPF程序调用之间保存状态信息,也可以利用map在用户态程序和内核之间共享数据等。

阅读全文 »

DPDK中的无锁环形缓冲区

发表于 2016-11-20 | 更新于 2019-05-29 | 分类于 DPDK

  DPDK中实现了无锁环形缓冲区,支持单生产者或者多生产者入队列,单消费者或多消费者出队列。

阅读全文 »

客户端非阻塞socket建链流程

发表于 2016-10-23 | 更新于 2019-05-29 | 分类于 Nginx

  TCP协议是面向连接的、可靠的、基于字节流的传输层协议。那使用tcp协议进行通信的两端是如何进行通信的?使用tcp协议进行通信的两端是通过套接字(scoket)来建立连接的。套接字socket主要有两种类型,阻塞和非阻塞。通常为了防止进程阻塞以及避免cpu被长时间占用,客户端和服务端一般都会采用非阻塞socket进行通信,其中Nginx就是一个典型的例子。下面我们就以Nginx的upstream机制所涉及的与后端服务器建链的流程来总结下使用非阻塞socket的客户端建链流程。

阅读全文 »

ngx_stream_limit_conn_module模块解析

发表于 2016-10-16 | 更新于 2019-05-29 | 分类于 Nginx

  ngx_stream_limit_conn_module模块在stream子系统中是用来限制某个ip的并发连接数的。

阅读全文 »

ngx_stream_access_module模块解析

发表于 2016-10-15 | 更新于 2019-05-29 | 分类于 Nginx

  ngx_stream_access_module模块在stream子系统中是用来实现对某个ip访问控制功能。在stream子系统中,虽然没有像http子系统那样在代码中明确地定义处理阶段,但是其处理流程也是按照一定的阶段来划分的,stream处理阶段包括:Post-accept、Pre-access、Access、SSL、Preread、Content、Log。

阅读全文 »

12
TitenWang

TitenWang

The Next Maigc
14 日志
4 分类
8 标签
GitHub E-Mail
Creative Commons
推荐阅读
  • Shandong University
  • AI一曲
© 2016 – 2019 TitenWang
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Mist v7.1.1
|