自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 qemu-arm64 添加acpi platform设备

arm64 qemu 添加acpi platform设备

2023-02-01 21:32:00 320

原创 Linux内核参数梳理

系统 node-exporter指标 说明 采集来源 procs_blocked I/O阻塞中的进程数 /proc/stat procs_running 运行中的进程数 load1 1min内系统平均负载 /proc/loadavg load5 5min内系统平均负载 load15 15min内系统平均负载 filefd_allocated 已分配文件描述符数量 /proc/sys/f...

2021-11-12 23:46:30 1868

原创 perf kvm查看虚机热点调用

#### 背景:当需要分析虚机内部函数调用情况,有时候无法连接到虚机(例如ssh和vnc都连不进去),这时候常规手段就无法进行分析。此时可用perf kvm在宿主机上去分析虚机内部得调用情况。#### 步骤:1. 导出虚机内部的kallsyms和modules文件到宿主机上。如果虚机已经无法连接进去,可找一台相同的虚机(内核和硬件配置都一致)并导出这两个文件。下面示例,guest对应待导出文件的虚机。 ssh guest "cat /proc/kallsyms" > /tmp/g...

2021-11-12 23:33:17 1465

原创 OVS-DPDK网关双网卡性能损耗问题分析

场景构造:node1 (10 pods) → gate_way → node2网关配置:复现过程:node1节点建10个pods,并行打流,通过tcpreplay方式,流量经过网关节点 直接到 node2 服务器发送端提供了约400W pps的发包能力,此时后端实际收包约为200W 不到,和之前测的单卡场景相差约100W左右,性能大大降低。问题分析:热点函数分析: 通过perf 分析,和正常单网卡场景函数热点对比,发现dp_packet_batch_c..

2021-11-12 23:05:16 1163

原创 个税计算python版(2021最新版)

# -*- coding: UTF-8 -*-'''参数: sqgz: 税前工资 gjj_base: 公积金基数 sb_base: 社保基数 zxkc: 专项扣除 (教育子女 + 赡养老人 + 房贷 + ...) gcc_ratio: 公积金缴存比例返回值: 年度纳税总额, 年度公积金总额, 年度工资到手收入总额'''def caclute(sqgz,gjj_base,sb_base,zxkc,gjj_ratio): ## 养老保险...

2021-04-11 10:54:00 1994 1

原创 QEMU网络虚拟化(三):面向对象的模型QOM

qemu面向对象的模型:QOMqemu用结构体实现了一套面向对象的机制,用于实现类和对象的概念,也实现了面向对象的封装、继承、多态。大部分设备模拟代码都会基于这个qom模型。相关数据结构:类定义:struct ObjectClass{ /*< private >*/ Type type; /* typedef struct TypeImpl *Type */ GSList *interfaces; const char *object_cast_ca

2020-06-06 21:43:00 583

原创 QEMU网络虚拟化(二):主事件循环

主事件循环qemu是基于glib事件循环机制main ->​ | -> qemu_init_main_loop : 初始化创建了两个事件源,分别是qemu_aio_context和iohandler_ctx main_loop : 是一个while循环​  -> main_loop_wait​   -> os_host_main_loop_wait​    | -> glib_pollfds_fil -> g_main_context_prepare -&g

2020-06-06 21:35:26 885

原创 QEMU网络虚拟化(一):qemu-net 初始化

qemu-net 初始化初始化流程main() – vl.c 主函数 | -> net_client_parse : 解析网络部分命令行参数 QemuOptsList -> QemuOpts -> QemuOpt对应具体键值对 net_init_clients – net.c : 初始化网络部分,可能存在多个netdev,依次初始化  -> net_init_client/net_init_netdev -> net_client_init -&g

2020-06-06 21:11:16 1589

原创 用raw_socket实现多线程icmp收发包遇到的坑

一、问题描述因为工作需要,需要同时对多台主机进行ping探测,计算时延。不像tcp和udp,icmp报文需要自己手动构造报文头。简单的demon代码如下(python实现):import osimport threadingimport timeimport socketimport structimport select## 这部分为IP报文头解析部分,非必要部分,为了...

2020-03-15 01:01:24 3342 7

原创 python解析ip header

class IpHeader(object): def __init__(self): self.versionAndLen=None # 4bit version 4bit header length self.tos=None # 8bit type of service self.tolalLen = No...

2020-03-12 20:49:16 574 1

转载 OpenvSwitch(OVS)全面解读

OpenvSwitch(OVS)全面解读1 什么是Open vSwitchOpenvSwitch简称OVS,正如其官网(http://openvswitch.org/)所述,OVS是一个高质量、多层的虚拟交换软件。它的目的是通过编程扩展支持大规模网络自动化,同时还支持标准的管理接口和协议。随着虚拟化应用普及,需要部署更多的虚拟化交换机,而费用昂贵的闭源虚拟交换机让用户不堪重负,多层虚拟...

2020-01-17 11:45:15 12070

原创 一例共享库文件被修改的定位分析

机器环境:centos 6.5发生背景:为了修复libvirt1.2.5的一个bug,修改了源码并重新编译,替换/usr/lib64/libvirt.so.0.1002.5文件,编译生成的so文件大小为3407432字节,但是第二天,文件大小却变为3411576字节,文件被莫名修改。问题定位:1、文件对比:对比变化后的的文件和变化前的文件【为了便于分析,提取了变化的so文件到t...

2019-12-10 14:21:07 351

原创 一个内核slub内存泄漏问题分析

操作系统版本:centos7.3内核版本:3.10.0-693利用slabtop命令,发现有大量的kmalloc-64占用,且一直未释放,初步怀疑是内存泄漏,但不知道谁泄漏的。通过打开kmemleak,发现有install进程大量__kmalloc且size大小刚好也为64k(线上机器会定期调用/usr/bin/install命令,至于为何调用,那是业务的需求了。。。。。。写个死循...

2019-10-22 18:33:37 1151 3

原创 一个内存碎片化导致系统SYS CPU利用率过高问题分析

1、场景描述生产机器pg_update升级进程完成后,调用postgres多进程进行SQL压测,发现性能大幅下降,SYS CPU占用很高2、问题分析 1)机器共2个NODE节点,postgres基本都是跑在NODE1上,跑到后期,出现严重内存占用不均匀,NODE1上内存基本耗尽,NODE0还有不少内存。查看NUMA分配策略: 策略为默认策略,preferr...

2019-10-22 18:10:00 1731

原创 libvirt-1.2.5的绑核bug分析以及修复

BUG触发方式 [注:本分析假设物理机有32个核]复现前提:虚拟机创建时所有vcpu处于已绑定状态(即非绑定到所有CPU上) 复现场景1: 对所有vcpu执行解绑(绑定到0-31) 对虚拟机执行shutdown操作 复现场景2: 对所有vcpu执行解绑(绑定到0-31) 对虚拟机任意一个vcpu执行重新绑定操做 BUG分析全解绑会执行virDomainVc...

2019-10-09 21:12:34 491

原创 gdb结合qemu-kvm调试linux内核

调试系统:系统:Fedora 29内核:5.0.6-200.fc29.x86_64调试目标系统:系统:CentOS 7.6内核:3.10.0-957.10.1.el7.x86_64在操作以下步骤之前,先用命令行方式启动虚拟机,参见我的另一篇文章:https://blog.csdn.net/lonely_geek/article/details/891606271、下载并编译内核源码...

2019-04-11 17:14:03 1118

原创 qemu-kvm 命令行方式启动虚拟机

对于KVM虚拟机,一般启动我们会用 virsh create ×××.xml 方式启动,其实底层还是调用了qemu-kvm命令行去执行,只不过virsh在启动前做了一些准备工作。有时候,我们需要用qemu-kvm方式去启动虚拟机,比如本人想做基于KVM的linux内核调试。1、生成命令行如果正在跑一个虚拟机,可以根据域ID或者虚拟机名城生成命令行:virsh domxml-to-nativ...

2019-04-10 09:56:39 26070 3

原创 kpatch入门实践教程

1、基本原理以及使用教程,参考:https://github.com/dynup/kpatch/blob/meastr/README.mdhttps://github.com/dynup/kpatch/blob/master/doc/patch-author-guide.md2、测试环境:系统:CentOS 7内核版本:3.10.0-957.5.1.el7.x86_64工具:gcc ...

2019-03-14 16:29:39 2597

原创 HOG + SVM 实现静态手势识别 (基于Android平台实现)

HOG特征,最经典的用途就是行人检测。其实不只是做行人跟踪,在做静态手势识别方面,也还是不错的,网上也有不少人实现过,但是基于Android平台的不多。本文利用OpenCV + Android 平台实现了 张开的手掌的 静态识别。 硬件: Samsung Note3 N9008 (高通枭龙800处理器,2013年的主流配置) 软件:Opencv + Android 5.1开始以为用手机做HOG特

2016-08-29 23:31:06 6089 5

原创 DIY智能插座(六) -- 利用网易云信实现外网控制

之前讲的几篇,做出的插座无法实现外网控制,但是有时候确实需要外网控制。如果你的手头有一台闲置智能手机(相信大家都有),便可以用来作为一台网关来使用。为了尽可能的降低开发难度和成本,可以选择推送方案(百度云推送、极光推送等),或者干脆用IM即时通信方式(P2P模式来做外网控制),省去了我们搭建服务器的成本。测试了几个方案,最终选择网易云信(IM方案)作为远程控制方案,无论从实时性和稳定性,都比较OK~

2016-08-15 23:17:23 1679 1

原创 DIY智能插座(五) -- Android客户端

手机客户端主要涉及蓝牙编程,涉及到几个概念:Service’s UUID : 标示服务类型,例如蓝牙打印服务、蓝牙音频传输服务、蓝牙串口服务,只有正确配置这个UUID,才能正常连接,对于蓝牙串口(SPP)服务,对应的UUID为:00001101-0000-1000-8000-00805F9B34FB蓝牙主/从模式:蓝牙主设备一般可以连接多个设备,例如你的电脑、手机都是这样,而一般的设备,例如蓝牙耳机

2016-08-12 22:54:37 2520 1

原创 DIY智能插座(四) -- 蓝牙POS编码

TC35661蓝牙芯片要正常使用的话,必须先要进行一系列配置,GD32F芯片通过串口和该蓝牙芯片相连,首先需要通过串口将配置命令一条一条的写进去。这些命令就是所谓的 HCI Command。如果不写程序,单纯就可以通过串口助手发送这些命令即可完成初始化,大致分为几个阶段 : HCI命令 –> MNG配置 –> SPP 配置 主要是配置MAC地址、设备类型、配对密钥、链路密钥、射频参数等。 这

2016-08-11 23:47:29 2851

原创 DIY智能插座(三) -- 蓝牙POS机改造

淘宝上可以搜到不少蓝牙POS,1毛包邮,当蓝牙串口蛮不错的。本人淘的一款叫开店宝。下面开始拆机改造了,哈哈~串口可以直接找到测试点焊盘,蛮好焊接的,bootm0引脚拉高,可以进入Download模式主控制芯片采用了GD32F103,国产的CotexM芯片,功能和STM32基本完全一致,代码兼容。蓝牙芯片采用的东芝的方案,TC35661芯片,蓝牙芯片被焊接在单独的一个小底板上,底板貌似对应型号BM77

2016-08-11 20:56:08 14155

原创 DIY智能插座(二) -- C51单片机编码

插座的通断是通过单片机来控制,结合蓝牙POS机做透传,即可直接通过蓝牙来控制继电器。      51单片机代码比较简单,放出完整代码。#include <stc89c5xrc.h>#include <string.h>#define FOSC 22118400L //定义晶振频率#define BAUD 115200 //定义波特率#define SMOD 1#define RX_B

2016-08-11 20:19:20 3200 2

原创 DIY智能插座(一) -- 硬件搭建

目前智能插座已经有不少厂家在做了,而且比较便宜,小米、公牛都有做。目前的控制方式,无非就是WIFI、蓝牙、Zigbee,但大部分都只有一路控制,少数带多路控制的,价格卖的比较高。如果你有单片机或嵌入式基础,完全可以自己动手做一个,如何控制完全凭自己发挥。下面开始智能插座DIY之旅~~      自己DIY用的零件清单(大部分都是手头拆机的):   1)STC51系列单片机(淘宝上几块钱就能买到

2016-08-10 23:00:11 9901 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除