- 博客(58)
- 资源 (3)
- 收藏
- 关注
原创 rdma_get_src_port()/rdma_get_dst_port() 获取的port是什么的port
RoCE v2 是基于UDP的,那么猜测rdma_get_src_port()的port可能是UDP port即传输层的port,类似 ip:port 这种格式。但是通过抓包发现,这里的port是IB的port,不是udp的
2024-01-10 19:02:58
575
2
原创 整型int溢出引起的crash
其最高位为 1 表示负数。当与char* 相加时,由4位扩展到8位时,高位补符号位1,得到的值为 0xFFFFFFFF0x88662030,再与char* 相加,结果是一个非法地址。char* 本质是一个无符号数,长度为8字节,char* 与 int相加时,int会自动转换为无符号的8字节数值。当 int 溢出时,转换出的无符号数与实际的数值不符,导致 men_list[i] 中保存的是一个无效地址,当访问这个无效地址时,发生crash。当 i * size 的乘积超过int表示的最大正数时,发生溢出。
2023-08-15 10:27:57
322
原创 买重疾险的体验
2、至于「花更少的钱可以保更长的时间」,这个并不存在,保费和消耗的现金价值是根据发生率表精算过的,什么时候买的单价都一样,都是x元买y%发生概率,就是一个饼一块和两个饼两块的区别,没有哪个更赚哪个更亏,只有早享受早花钱的区别。1、最佳组合:消费型重疾保到70岁(不返还不捆绑) + 符合收入水平的寿险 + 医疗险;
2023-06-08 11:08:26
233
原创 CPU主频设置
查看CPU idle state 信息:cpupower idle-info 或 cat /sys/devices/system/cpu/cpuidle/current_driver ,cat /sys/devices/system/cpu/cpuidle/current_governor_ro。查看频率:cpupower frequency-info 或 cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq。
2023-05-07 17:05:38
3502
原创 Infiniband简介
Infiniband介绍参考:InfiniBand Trade Association一、基本概念1、与传统网络区别 传统网络是以“网络”为中心的。操作系统是资源的拥有者并将资源抽象为服务,应用访问资源需要要向操作系统请求相应的服务(网络、存储等);infiniband是以应用为中心的(applicationcentric),它从应用的视角去分析解决IO问题及如何设计网络。其基本思想是提供简单易用的消息服务:控制消息与数据消息。应用可以直接访问消息服务而不需要经过操作系统,这是由于IB....
2022-05-21 20:44:03
1489
原创 ioctl 简介及示例
一、ioctl 简介ioctl是应用与驱动的常用接口。对字符设备、块设备、及套接字,非常方便扩充新的命令。二、定义#include <sys/ioctl.h>int ioctl(int fd, unsigned long request, ...);fd 是操作的描述符,在Linux中一切设备皆文件;request 是发给设备的请求命令,部分命令定义可以从 /usr/include/linux/fs.h查找,例如#define BLKDISCARD _IO(0x12,119)。.
2022-03-12 17:58:48
8449
原创 存储新技术及发展趋势【持续更新】
1、NVMEover TCP: Lightbits和solarflare正在推广基于 TCP-over-bog-standard Ethernet的Nvme-over-Fabric(Nvmeof)方案,目标是取代通过数据中心级以太网、iWarp,rdma、infiniband。该公司的XstremeScale NIC支持内核旁路套件原文: Future is bright for NVMe-over-Fabrics with TCP and Ethernet, say Solarflare,...
2022-03-04 15:25:58
1618
原创 套接字socket选项TCP_NODELAY、TCP_CORK与TCP_QUICKACK
一、简介:TCP_NODELAY关闭Nagle算法,控制的是数据的发送。Nagle 算法规定,如果包大于MSS(Max Segment Size)或含有FIN则立即发送,否则放入缓冲区,等已经发送的包被确认后后再发送。即网络上只能有一个未确认的小包。可以降低网络小包数量,减少了ip头部在网络上的比重,提升网络性能。https://www.fanhaobai.com/2017/11/40ms-delay-and-tcp-nodelay.htmlTCP_CORK:设置后不会发送任何小包(小于mss)除非超时
2022-03-01 19:13:09
8050
原创 golang实现进度条 ProcessBar
为了避免引入更多的第三方库,自己实现了一个简易进度条,可以用在CLI中package mainimport ( "fmt" "time")type ProcessBar struct { Header string Width int LastLen int CurrentString string}func (bar *ProcessBar) InitBar() { bar.Header = "Process:" bar.Width = 100 bar.LastLe
2022-02-15 17:46:04
1007
原创 rdma_destroy_id() 前需要 ack相关event
《RDMA_Aware_Programming_user_manual》中提到:rdma_destroy_id() : users must free any QP associated with this id before calling this routine and ack related events;例如在销毁rdma资源时,会先通过rdma_disconnect()来释放链接,...
2020-02-01 11:28:42
487
原创 使用cgo,由于内存释放导致内存无效,引起的http crash
程序基本框架:在C代码中申请内存并放入数据,然后用Go代码通过http将数据发送到对端,发送完成(成功或失败)后释放内存。遇到的问题:当发送成功的时候,一切正常;当发送失败的时候,偶尔会crash。//C代码void send_data(){ buf = malloc(data_len); goHttpSendData(buf, data_len); // 在go代码中定...
2019-01-27 15:36:01
4645
原创 ssh_exchange_identification: read: Connection reset by peer
ssh 80%概率出现下面错误ssh 192.168.1.2ssh_exchange_identification: Connection closed by remote host ssh 192.168.1.2ssh_exchange_identification: read: Connection reset by peerping 是没问题的 解决方法:修改/etc/...
2018-08-14 17:58:22
761
原创 一种使client避免zookeeper丢事件的方法
本文地址:https://blog.youkuaiyun.com/WEI_GW2012/article/details/80398639在很多分布式系统中,集群管理依赖zookeeper的watcher机制。由于watcher对于节点事件(另一种是连接事件)是一次性的,即一旦触发就失效,若想再次获取相应zk路径上的事件,需要再次设置watcher。如果zk路径在两次watcher之间发生了改变,clien...
2018-05-21 22:28:57
732
原创 NVMe SSD Trim在数据安全中的作用
Trim在SCSI 里面的同等命令叫做UNMAP,NVMe里面叫Deallocate,文件系统叫做discard。在SSD存储系统中,定期主动执行trim指令,能够减少因IO触发的写放大,从而提升IO性能。另外,主动trim后,再次读取返回0,这样使client无法读取已经删除的数据,有利于数据安全(隐私),特别是在公有云中,存储系统主动trim是很有必要的。以下是原理解释和代码验证。...
2018-05-15 19:36:06
6302
原创 enhance io参数配置方法及其含义
enhance io参数设置一、配置方法:可以利用sysctl -w或者编辑/etc/sysctl.conf进行配置,配置格式:dev.enhanceio.your_cachename.autoclean_thresholdf,函数eio_sysctl_register_common()针对每个值注册了一个回调函数,通过这些回调函数来修改dmc->sysctl_active.相应参数。
2018-01-31 19:32:50
1043
原创 Redhat6.9 网卡做bond绑定
以下是自己做bond的记录,将eth0和eth1做bond0,参考https://www.cnblogs.com/huangweimin/articles/6527058.html绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。注意要让不同网卡上的 port 做绑定,这样才能实现冗余;1、关闭和停止NetworkManager服务,不关闭对bon
2018-01-24 19:23:15
4916
原创 DNS server配置
1、安装软件:bind-9.8.2/bind-libs-9.8.2/bind-chroot-9.8.2/bind-utils-9.8.22、修改/etc/named.confoptions { listen-on port 53 { 127.0.0.1; }; //修改为server 真实ip...... allow-query { any; }.....
2018-01-23 21:39:46
2086
原创 signal的不可靠性和sigsuspend的使用
一、signal 是不可靠的:在Ubuntu10.04,Kernel 2.6.23上,其设置的信号函数仅仅触发一次,触发完之后恢复为默认动作,但是sigaction函数设置之后一直有效;如下代码(摘自UNIX环境高级编程)当使用signal时,仅仅触发一次sig_int,再次发送中断信号执行默认操作:程序被终止;但是用sigaction设置,一直会触发sig_int函数;#
2017-10-29 23:48:50
1326
原创 函数、方法和接口的区别
函数是语句序列的打包;方法是对 对象成员的操作,由函数实现;接口是对方法的抽象和概括,有方法实现具体的接口;//之前是C开发,学习Go之后的认识。
2017-09-21 22:49:22
9769
原创 单机部署Oracle,用swingbench压测
以下是单机部署Oracle,用swingbench压测过程,详细步骤其他同学写好了,就直接贴了链接;一、安装:1、安装oracle参考:http://7680062.blog.51cto.com/7670062/1947655 需要先添加组:groupadd oinstall/dba 将用户添加到组:usermod -a -G groupname usernam
2017-09-07 18:44:58
1154
原创 浮动Ip方式部署iscsi集群(以sheepdog + keepalived + tgt 为例)
首先部署sheepdog集群。然后选择两个不同的计算节点分别进行如下操作1、tgt安装获取源码包https://github.com/fujita/tgt (注意需要支持的vdi大小,控制大小的宏#define MAX_DATA_OBJS (UINT64_C(1) make && make install启动tgt:tgtd start,并添加该命令到/etc/rc.d/rc.lo
2017-07-18 11:44:56
1570
原创 zookeeper的watcher机制及其在集群管理(sheepdog)中的使用
ZK集群节点角色分为Leader和Follower(同步),Leader(接受请求,投票),2n+1个,得票过半成为Leader。读任何一个节点,写到Leader然后同步给follower 1、数据模型znode 树模型,每隔叶子节点可以存少量数据,默认1M; 两种znode(永久PERSISTENT和临时ZOO_EPHEMERAL ),临时的在会话超时之后serv
2017-07-18 11:35:56
703
原创 windows端通过iscsi方式使用EBS盘
1、打开“iSCSI 发起程序”:控制面板--> 系统和安全--> 管理工具--> iSCSI 发起程序2、单击选项卡“发现” --> 单击“发现门户”3、在“IP 地址或DNS 名称”处填写已经创建target 的服务器地址,如下:4、打开“目标”选项卡,可以看到已经发现的目标,状态为不活动:5、单击需要连接的目标名称,然后点击连接,出现如下画面,单击
2017-07-17 18:19:34
1690
原创 sheepdog集群节点加入时,视图变化过程分析
sheepdog集群节点加入时,视图变化过程,这里的“视图变化”包含两个方面:一是sheepdog与zookeeper交互时,两者时间传递消息的变化,即ev->buf;另一个方面是sheep节点本地sd_node_root的变化。本文按照节点加入流程一起分析视图变化,仅仅涉及视图相关,略去了其他流程。
2017-05-31 23:35:52
794
原创 extern C的使用
作用简介extern “C”通知编译器将extern “C”所包含的代码按照C的方式编译和链接。主要目的是 C++代码可以调用C接口因为C与C++编译后在符号库中的名字不同C _funcC++ _func_type_type_type1、在C++的使用示例:1.1直接混编代码#ifdef __cplusplusextern "C" {#endif /*
2016-12-24 11:56:09
578
转载 Iometer存储测试工具
IOMETER 官方网站:http://www.iometer.org/Iometer的用户指南上说,Iometer是一个单机或者集群的I/O子系统的测量和描述工具。它最初是由英特尔公司在1998年2月17日的英特尔开发者论坛(IDF)宣布,自那时以来,在行业内广泛的蔓延,成为了标准。与此同时,英特尔已经停止Iometer的开发工作并把开放源码交给了OSDL。 2001年11月
2016-09-20 09:51:26
1637
原创 Ceph 的简单部署步骤
部署方案:一台 admin,一台 mds + mon,两台 OSD,四台都是在虚拟机上安装CentOS7.1、部署完 MON 之后,通过 ceph -s 查看集群状态,提示 ERROR: missing keyring, cannot use cephx for authentication[ceph@mdsmon ~]$ ceph -s2015-12-29 23:49
2015-12-30 21:27:17
9969
原创 CentOS7 网络配置问题
新装了CentOS7,但是 ifconfig 命令无法使用: ifconfig command not found。解决办法:yum install net-tools.
2015-12-26 12:28:23
1045
转载 awk与shell参数传递(或说变量传递)二三点
awk与shell间参数(或说变量传递)是shell编程中常有的话题了,因为其中实际涉及到不少的知识点,比如包括a:进程进通信b:awk参数形式c:shell命令解析,命令替换等等,在此列举二三点例子,做为小结。以下主要分为二部分1:shell给awk传参2:awk往shell传参参考文档:gnu 的awk documentationhttp://www.g
2015-03-17 22:45:53
723
原创 C语言判断文件夹名是否合法
/*************************************************************************** * Function Name: validateFoldername * Description: The ength of folder name should be less than 255. *
2015-02-28 18:40:37
3465
转载 常见gcc编译警告整理(开始)
1、warning: no newline at end of file在文件最后一行加上回车键解释:在《Rationale for the C99 standard》一文中,有C99的相关信息:A backslash immediately before a newline has long been used to continue string literals, as
2015-01-15 14:18:32
955
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人