马先生的技术笔记
职业软件工程师 / 业余硬件工程师 / 入门3D建模工程师

superpowers技能使用备忘

...
2026-07-17

零散的操作备忘

...

先用/init 把项目的基础信息(启动、编译、用法)写进 CLAUDE.md,后续每次对话claude都知道怎么操作。如果还有更复杂的测试流程,再补一个自定义 skill。

比如创建一个my-test的skill,用来测试你的服务或程序

以下是SKILL.md的内容,其中name必须是英文,其他都可以是中文

...
2026-06-09

claude安装、配置、使用备忘

官方给出的安装方法是curl -fsSL https://claude.ai/install.sh | bash但是即使配置代理,也无法正常安装,报错如下

因此可以使用以下安装方式,以下安装方式是老的安装方式,也是上面install.sh本质做的事情

...

本文CentOS Stream release 9环境下生成

下载地址:

建议下载最新版本的,因为下载老版本的可能会遇到装插件的时候提示版本过低

...

main.py

cpython实际就是python的默认C语言实现,类似的还有jpython(java实现),IronPython(.net实现)
理论运行和直接用默认python运行一致,但是如果自己拿源码编译,可能因为编译选项等差异,会导致运行效率有区别
此处不再演示

cython本质是python+c语言的混编,因此代码需要做修改,对于已知类型使用cdef显示定义类型,可以减少python运行时识别类型的过程
因此可以显著提升性能,当然除了定义类型还有其他手段提升性能
main.pyx

...

前置概念
1.spdkcsi : spdk提供的csi对接插件,其本身不在spdk代码中,为spdk为k8s-csi提供的对接插件
2.spdk-server : 真正提供存储服务的spdk服务器节点,接收业务端connect/login/io请求
3.spdk-server-api : spdk-serve本身提供的是基于socket文件的rpc统信,为对外暴露更通用的配置接口,spdk提供了rpc_http_proxy.py代理,该代理的作用是将apt-restful请求转换为spdk-server-rpc请求
4.调用顺序: k8s-> spdkcsi -> spdk-server-api -> spdk-server-rpc -> spdk-server

配置文件用于告知spdk插件,spdk-server地址和支持的传输协议,用于spdkcsi插件向spdk-server(以rpc_http_proxy.py方式运行的http代理转发给spdk-server)发送配置请求

配置spdk节点地址和传输协议支持通过deploy时的配置项ConfigMap

...

部署k8s提示cgroups v1不再支持cgroups v1 support is in maintenance mode, please migrate to cgroups v2
参见: https://kubernetes.io/blog/2024/08/14/kubernetes-1-31-moving-cgroup-v1-support-maintenance-mode/

该限制是从k8s-1.31开始,实际不影响使用,但是新功能不再支持,如果想将cgroup迁移到v2,可按如下方式设置
注意: 仅比较新的内核支持cgroup-v2,老的操作系统可能无法开启

...

目前已知的3种方法都有一定的局限性,不能很完美实现当进程内存泄漏时杀掉进程
1. systemd的服务配置中增加MemoryMax=XXX的配置项,该配置项仅能限住物理内存,如何服务器未配置swap,内存达到时则会触发oom杀掉进程。如果服务器配置swap,将继续消耗swap直到swap也消耗完,systemd还有一个MemorySwapMax=XXX配置项可以限制swap,但是除非很新的操作系统使用了cgroup2该配置项才能生效。
2. systemd配置的MemoryMax=XXX参数,会同时作用到被主进程拉起的其他进程,如主进程拉起mysql进程,虽然systemd的MemoryMax参数是作用在主进程上,但是mysql会继承该限制。原因是MemoryMax参数是通过cgroup生效的,systemd启动的主进程和子进程都将在该cgroup组中。
3. ulimit和prlimit设置进程最大内存地址,这两种方式是作用在系统函数行为上,比如malloc分配内存时被限制了内存上限,内存分配不出来的时候panic,但是如果上层调用捕获了这个异常,程序就不会退出了,并不会处罚oom杀掉进程。

当前机器cgroup为v1,若是v2将显示为cgroup2fs

测试脚本
该脚本使用python构造一个很大的内存,触发方式是在/root下创建start文件,touch /root/start,用其他语言可以类似

...

程序运行过程中发现有内存泄漏,需要主动触发coredump用于分析,可以按以下步骤操作

本质是通过kill命令发送信号触发coredump,可以触发的信号有很多,常用的的信号SIGABRTSIGSEGV

...
搜索
分类
2篇
c
1篇
8篇
19篇
9篇
2篇
k8s
2篇
4篇
页面