- 博客(62)
- 资源 (2)
- 收藏
- 关注
原创 数据库修仙炼气篇八——postgresql之IO调优
检查点是数据库的关键行为,同时也是IO敏感的;其保证了数据库的一致性状态,定期执行检查点是很重要的,确保数据变化持久保存到磁盘中并且数据库的状态是一致的。不当的检查点配置会导致IO性能问题。我们需要关注检查点的配置,确保没有任何IO的尖刺(这同样也取决于磁盘性能的好坏,以及数据文件的组织)。统自动执行checkpoint之间的最大时间间隔。系统默认值是5分钟,这个值可以在压测过程中调大,尽量避免执行checkpoint争抢IO。
2022-04-25 16:22:39
1715
原创 数据库修仙炼气篇三——postgresql进程之BgWriter
BgWriterBgwriter是一个Background Writer进程的简称,Bgwriter会定时将缓存中一些已经更改的数据(脏缓冲区)写入到磁盘。BgWriter是postmaster通过fork创建的子进程。源码分析启动主进程fork子进程#mermaid-svg-MeTM8vpGMQzNuLFf {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-
2022-04-22 17:32:34
1018
原创 数据库修仙炼气篇十一——postgresql 存储管理
pgsql 存储管理内存管理包括共享内存、本地内存、内存上下文、缓冲区的管理。共享内存共享内存中存储了所有进程的公共数据,例如锁变量、进程通信状态、共享缓冲区中的页面块等。本地内存为每个后台进程所专有,是他们的工作区域,存储着属于该进程的Cache(高速缓存)、事务管理信息、进程信息等内存上下文内存上下文(MemoryContext)用于统一管理内存分配和回收。缓冲区磁盘中的文件块读入内存,被存放在缓冲区中, 称之为页面块或缓冲块。一个标准缓冲块大小为8K。PG设立了共享
2022-04-22 16:15:14
1473
原创 数据库修仙炼气篇十——repmgr
repmgrrepmgr用于管理 PostgreSQL 服务器集群内的复制和故障转移。repmgr 支持并增强了 PostgreSQL 的内置流复制,它提供了一个单一的读/写主服务器和一个或多个只读备用服务器。repmgr 流复制管理工具对 PostgreSQL 集群节点的管理是基于分布式的管理方式。集群每个节点都具备一个 repmgr.conf 配置文件,用来记录本节点的 ID、节点名称、连接信息、数据库的 PGDATA 目录等配置参数。在完成参数配置后,就可以通过 repmgr 命令实现对集群节点的
2022-04-22 15:36:06
1996
原创 数据库修仙炼气篇一——postgresql架构
pgsql架构整体模式pgsql采用C/S架构(客户端/服务端)模式。应用层通过INET或者Unix Socket利用既定的协议与数据库服务器进行通信。pgsql把客户端称为前端,把服务端称为后端。前端通过调用libpq来与后端通信。后端由多个进程组成,前端发送网络数据报文(查询请求)到后端,后端解析请求后回复相应的报文。
2022-04-11 16:25:41
3937
原创 数据库修仙金丹篇一——vpp开发指南
vpp开发指南vpp二次开发一般都是基于vpp框架进行插件开发。具体友包含以下几个方面:配置插入节点收包发包配置// sample_config是配置读取函数// sample是startup.conf文件中的模块名字VLIB_CONFIG_FUNCTION (sample_config, "sample");// 读取完配置后可以使用sample_init来进行初始化VLIB_INIT_FUNCTION(sample_init);插入节点// 注册一个名为sample_no
2022-02-16 17:30:02
2284
原创 数据库修仙金丹篇二——vpp 主要数据结构
vpp 主要数据结构vlib_main_tvpp最顶层结构,其中包含了vpp执行的绝大部分信息,后续注册加载都是填充该数据结构。执行都需要从该数据结构中获取相关信息。其中节点存在node_main中,即:/* Node graph main structure. */vlib_node_main_t node_main;vlib_node_main_t存放节点图。其中节点实际存放位置为:/* Public nodes. */vlib_node_t **nodes; // 存储非V
2022-02-14 16:14:56
1848
原创 数据库修仙秘境篇五——linux cache指北
linux cache指北cache是什么计算机中数据存取满足“二八定律”(局部性原理),为了以较低的成本大幅提高性能,现代cpu都有cache。cpu cache已经发展到了三级缓存结构,基本上现在买的个人电脑都是L3结构。其中L1和L2cache为每个核独有,L3则所有核共享。本文内容大量摘抄自飘舞的雪的博客,详情请参阅原文。cache bouncing为了保证所有的核看到正确的内存数据,一个核在写入自己的L1 cache后,CPU会执行Cache一致性算法把对应的cacheline(一般是
2022-01-27 15:36:05
553
原创 数据库修仙金丹篇三——vpp源码流程
vpp源码流程代码流程#mermaid-svg-lRHo58waci1Xu9up .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-lRHo58waci1Xu9up .label text{fill:#333}#mermaid-svg-lRHo58waci1Xu9up .node rect,#mermaid-s
2022-01-20 17:54:05
943
原创 数据库修仙金丹篇四——vpp vector指北
vpp vector指北版权声明:本文为CSDN博主「成王君」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_45429253/article/details/97020110vectors 的本质外在表现很简单,实际上就是一个动态的可变大小数组。这个数组:每个元素的大小可以变化,数组大小可以变化。从而使得其可以作为任何数据结构的存储结构,事实上,VPP就是这样做的,所有数据结构的存储结构就是
2022-01-14 13:16:08
587
原创 数据库修仙金丹篇五——vpp抓包
vpp抓包vpp支持抓包,对报文抓取后保存到文件中,并通过wireshark分析报文。要进行抓包需要先进入vppctl,抓包分为rx和tx:tx# 查看tx 抓包状态vpp# pcap tx trace statusmax is 100 for any interface to file /tmp/vpe.pcappcap tx capture is off...# 开启抓包# max 1000指定最多抓取1000个报文# intfc intface_name 指定抓取的网口# f
2022-01-14 11:45:54
2344
原创 数据库修仙秘境篇三——linux内存管理指北
linux内存管理指北内存是一段连续的地址单元,linux内核接管内存管理后,会将内存划分为内核区和用户区。因而内存管理就分为两个层面:内核内存管理一般是kmalloc(小块内存)和vmalloc(大块内存)。用户内存管理一般是malloc(小块内存)和mmap(大块内存)。本文内容大量摘抄引用自Mortree的博客和CodingLabs博客,这里只是做了简单的整理。详细内容请阅读他们的博客。内存分类相对于进程来说,内存分为如下几个部分:堆栈数据段代码段bss段当
2022-01-13 10:04:14
197
原创 数据库修仙秘境篇四——linux锁指北
linux锁指北锁一般用于解决资源竞争,比如多进程或者多线程场景下。锁主要是为了保证同一个资源在同一时间只能被一名修改者修改。互斥锁(mutex)对于竞争资源来说,只要有一方获取了资源的锁,另一方就无法修改竞争资源,需要等待锁释放并获取到锁之后才能进行修改。有两种方式创建互斥锁:静态创建POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER 来静态初始化互斥锁,方法如下:pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
2022-01-05 18:05:40
654
原创 数据库修仙金丹篇八——dpdk之kni使用
dpdk之kni使用什么是kniKni(Kernel NIC Interface)内核网卡接口,是DPDK允许用户态和内核态交换报文的解决方案,模拟了一个虚拟的网口,提供dpdk的应用程序和linux内核之间通讯。kni接口允许报文从用户态接收后转发到linu协议栈去。 为什么要弄一个kni接口,虽然dpdk的高速转发性能很出色,但是也有自己的一些缺点,比如没有协议栈就是其中一项缺陷,当然也可能当时设计时就将没有将协议栈考虑进去,毕竟协议栈需要将报文转发处理,可能会使处理报文的能力大大降低。当k
2021-12-31 09:58:32
7622
1
原创 数据库修仙秘境篇五——linux巨页内存编程
linux大页内存HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能。概念Page Table: page table也就是一种用于内存管理的实现方式,用于物理地址到虚拟之间的映射。因此对于内存的访问,先是访问Page Table,然后根据Page Table 中的映射关系,隐式的转移到物理地址来存取数据。TLB: Translation Lookaside Buffer (TL
2021-12-29 16:31:20
1920
原创 数据库修仙金丹篇六——vpp与dpdk的关系
vpp与dpdk的关系dpdk作为vpp的一个插件,主要用来从网卡收发包。vpp使用如下命令参数初始化dpdk eal。EAL init args: -c a -n 1 --in-memory --huge-dir /mnt/hugepages --no-pci --proc-type primary --file-prefix vpp --master-lcore 1dpdk初始化流程读取配置dpdk_config初始化库dpdk_lib_init注册节点输入节点dpdk_
2021-12-29 16:29:11
6941
原创 数据库修仙金丹篇七——dpdk常用接口指北
dpdk常用接口指北基于dpdk18.11版本,其他版本注意区别。一般用dpdk做网口管理、网口收发包、内存管理等操作。dpdk环境初始化int rte_eal_init(int argc, char **argv);通用参数配置-b blacklist-w whitelist-c coremask-l corelist-s service coremask-S service corelist-m size of memory-n force number of channel
2021-12-28 09:49:54
2186
原创 数据库修仙秘境篇六——linux socket编程指北
linux socket编程指北以下server和client的c代码均拷贝自博客,详细内容请阅读原文。在其上添加了错误码打印,修改了服务端ip和端口,并增加了makefile脚本。server/*serve_tcp.c*/#include<stdio.h>#include<sys/socket.h>#include<netinet/in.h>#include<stdlib.h>#include<arpa/inet.h>#incl
2021-12-27 16:29:00
1267
原创 数据库修仙金丹篇九——vlan使用指北
vlan使用指北vlan详细内容请参考博客。VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。简单来说,同一个VLAN中的用户间通信就和在一个局域网内一样,同一个VLAN中的广播只有VLAN中的 成员才能听到,而不会传输到其他的VLAN中去,从而控制不必要的广播风暴的产生。同时, 若没有路由,不同VLAN之间不
2021-12-27 13:57:01
790
原创 数据库修仙秘境篇七——linux内核模块指北
linux内核模块指北linux内核提供在运行时可进行扩展的特性,这意味着当系统启动并运行时,我们可以向内核添加或移除部分功能。我们在运行时添加到内核中的代码就被成为动态可加载内核模块,我们简称为内核模块。可以将内核模块模块简单理解为linux内核的插件。内核模块基本操作内核模块编译后会生成.ko的文件,在linux系统中可以执行如下命令查看模块相关信息。#加载内核模块insmod#卸载内核模块rmmod#列出内核模块lsmod#查看模块信息modinfo modname编写内核模
2021-12-24 14:15:53
516
1
原创 pdf解析思路
pdfPDF对象数字 42,3.1415字符串 (用括号括起来是字符串)名称 /用斜线开头为名称逻辑类型 true和falsenull值 null数组 [0 0 0]字典 <</Content 5 0 R /Resources 4 0 R>>文件流引用 6 0 R读取pdf读取pdf文件开头的行,获取pdf的版本号;%PDF-1.1...
2019-07-16 17:53:26
641
原创 HTML table跨行跨列
HTML table跨行跨列table读取读取时,表格行数与列数都已经确定,且每行单元格个数相同,每列单元格个数也相同。跨行跨列时,相应的单元格就要多占行单元格的位置和列单元格的位置。跨行跨多少行,相应的该单元格就要多占据行数-1个单元格,每跨一行,该单元格下一行就减少一个单元格。跨行时下一行单元格数减少。<table border="1"><tr>&l...
2019-06-28 14:39:11
1444
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅