Akemi

Akemi

it's better to burn out than to fade away

Python-fastapi框架
fastapi支持快速搭建api,并且原生支持协程,异步特性 在搭建api这方面比flask更加专精 快速开始123456789101112pip install fastapi uvicorn pydanticvim main.pyfrom fastapi import FastAPIapp = FastAPI()@app.get("/")async def root(): return {"message": "Hello World"} # 启动命令uvicorn main:app --re...
磁盘RAID调优简介
核心概念RAID Chunk SizeRAID 组的最小数据块单位(例如 64KB、128KB、256KB)。 作用:决定数据在 RAID 成员磁盘上的分布粒度。 示例:若 Chunk Size=64KB,写入 256KB 数据时,会被拆分为 4 个 64KB 的块,分布在不同的磁盘上。 文件系统 Block Size文件系统的最小存储单元(例如 4KB、8KB)。 作用:影响文件系统读写的最小单位,需与 RAID Chunk Size 对齐,避免跨磁盘读写碎片。 步幅Stride文件系统块连续分布在 同一磁盘上的数量。计算方式:步幅=RAID Chunk Size&...
FIO工具与存储诊断思路
测试存储系统需要模拟真实的工作负载。fio命令使用多个线程和进程模拟工作负载。场景包括顺序的、随机的读写和混合的I/O类型。该工具支持在单个文件上创建多线程I/O请求。 参数说明1234567891011121314fio --name=randwrite --ioengine=libaio --iodepth=1 \--rw=randwrite --bs=4k --direct=1 --size=512M --numjobs=2 \--group_reporting --filename=/tmp/testfile--name=randwrite 自定义任务名称--...
I/O调优--多队列IO调度器
RHEL8包含四种多队列I/O调度器设置:mq-deadline、kyber、bfq和none。每种调度器在特定设备上都具有性能优势,选择调度器必须基于生产存储系统上的基准测试。 mq-deadline 核心思想:给每个I/O请求设定一个“最后期限”,优先处理快超时的请求。 适用场景:机械硬盘(HDD)、传统磁盘等顺序读写性能敏感的设备。 减少磁头来回跑动的次数,提升效率 kyber 核心思想:实时监控IO延迟,动态调整队列深度 适用场景:NVMe SSD 等快速存储设备。 bfq 核心思想:保证每个进程公平分享IO资源 适用场景:桌面系统、多任务环境 优点:公平...
Linux内存调优
虚拟内存与物理内存计算机系统将内存组织成固定大小的块(chunks),称为页(page)。页面的大小取决于处理器架构;对于x86_64,标准页面大小是4KiB。系统上的物理RAM被分为页帧(page frame);一页帧保存一页数据。 当进程请求内存时,内核将页帧的物理地址映射到进程地址空间中的虚拟地址 进程虚拟地址空间的大小不依赖于安装的物理RAM,而是依赖于处理器架构。在64位x86-64系统上,虚拟地址空间大小为2的64次幂字节(16 EiB)。 单个进程通常不会使用它的整个地址空间。它的大部分是未分配的,也没有映射到任何实际的物理内存。 虚拟内存空间很大,但只有其中一部分映射到了...
CPU缓存介绍
多数系统都有两到三层缓存多级别的CPU缓存有助于处理器提供大小和延迟的最佳配置。L1 cache的数据访问时延为1ns。较大的L2缓存的访问延迟通常是10纳秒,而主存的访问延迟大约是60纳秒。 12345lscpuL1d cache: 32KL1i cache: 32KL2 cache: 1024KL3 cache: 33792K NUMA技术设计原理 节点构成:每个NUMA节点包含一个或多个CPU插槽及直接连接的内存模块。例如,双路服务器中,两个CPU各自配备独立的内存通道,形成两个节点。 访问差异:...
CPU亲和性与平衡中断
CPU亲和性指定CPU绑定进程,此举可以减少上下文切换,隔离关键任务 比如内存密集型进程限制为一个或两个cpu,可以增加缓存命中的机会从而提升性能 cgroup+systemd设置现在systemd还没有集成cpuset工具 常规就是通过在service下设置CPUAffinity 也可以通过executepost中进行设置 123456[Service]CPUAffinity=0 2 # 绑定到核心 0 和 2(用空格分隔)# 或CPUAffinity=0-3 # 绑定到核心 0 到 3(连续范围)# 或CPUAffinity=0,2 ...
Linux进程优先级
在Linux中,调度器根据分配给每个线程或进程的”调度策略”和”调度优先级”控制执行顺序。 基础概念静态优先级静态优先级是在新进程创建时设置的默认优先级,不能更改。使用”实时策略”的进程优先级的值在1(最低)到99(最高)之间,被称为”实时优先级”。调度程序在一个自平衡的二叉搜索树中维护一个可运行进程列表。要确定哪些进程下一个获得CPU时间,调度器查找具有最高静态优先级或实时优先级的进程。调度策略只确定具有相同静态优先级的进程在运行队列中的顺序。使用非实时策略的进程不使用静态优先级,静态优先级设置为0。 动态优先级当CPU不足时,进程优先级会被重置,因为优先级更高的进程会被优先调度。在此...
系统性能追踪工具systemtap/eBPF
systemtapSystemTap 是一种动态追踪和分析工具,允许用户通过编写脚本实时监控内核及用户空间程序的运行状态,常用于性能调优、故障排查和内核行为分析 核心组件 SystemTap 工具链:包含 stap(脚本编译器)、staprun(内核模块加载器)等工具。 内核支持:依赖 kernel-devel、kernel-debuginfo 包(提供内核符号和调试信息)。 脚本库(Tapsets):预定义的探针和函数库,简化脚本编写(如 syscall.* 表示系统调用探针)。 工作流程 编写脚本:用户编写 .stp 脚本,定义探针和触发动作(如记录数据、统计计数)。 编译脚本:s...
系统性能追踪工具perf/strace
perf收集系统性能Linux性能计数器(PCL)是一个基于内核的子系统,它为收集和分析性能数据提供了一个框架。在Red Hat Enterprise Linux 8中包含了PCL和PERF。 PERF是一个功能强大的分析基础设施,它提供了一套用户空间工具用来分析收集到的性能数据 perf stat12345678910111213141516171819202122yum install -y perfyum -y install kernel-debug# 查看当前可追踪的性能事件perf list# 追踪具体性能时间perf statperf stat dd if=/dev/zer...
avatar
王盛
当生命指向成长,时间就是你的朋友
FRIENDS
MyCSDN