自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mercury_Lc的博客

宁愿笑着流泪,也不哭着说后悔。

  • 博客(519)
  • 收藏
  • 关注

原创 一个简短的自我介绍

挺幸运,能够以这种方式和不经意间看到此刻文章的你打个招呼~如你所见,这里是一个程序开发人员在探索他所碰到的未知过程中的记录。巧合地,现在你在见证着我的成长,也不巧的,这里你看到了很多初学者所犯的几近乎愚蠢至极的错误,这些也都会成为我们相识的见证。在这里记录的有:Python,Java,Golang,C++等编程语言的学习笔记~计算机体系结构,计算机组成原理,编译原理,操作系统等计算机系统的知识基础。.........

2022-07-06 20:47:06 3035 2

原创 【二进制优化 | 性能优化】(篇1)什么是 BOLT(Binary Optimization and Layout Tool)?BOLT 的基本流程是啥?如何使用?

基本块是一段连续的机器指令序列,仅有一个入口(首条指令)和一个出口(最后一条指令),且内部无分支或跳转(除末尾)。调整函数内部基本块的顺序,使高频执行路径(Hot Path)连续排列,减少分支跳转和缓存行切换。将高频调用或共同执行的函数在内存中相邻存放,减少函数调用时的缓存行切换开销。:边权重为基本块之间的跳转频率(如A→B跳转100次,B→C跳转50次)。:将频繁访问的数据结构(如全局变量、常量池)集中存放,提升数据缓存命中率。:最大化“连续执行基本块”的局部性,即跳转频率高的块应相邻。

2025-05-01 22:19:55 544

原创 【运维 | 硬件】服务器中常见的存储插槽类型、对应的传输协议及其特性总结

企业级 HDD/SSD、RAID。消费级/企业级 NVMe SSD。传统 HDD/SATA SSD。高性能 SSD、低延迟场景。企业级存储、SAN 网络。企业级 NVMe SSD。最低延迟,无接口转换损耗。企业级 HDD/SSD。多协议兼容,热插拔支持。高端 NVMe SSD。优化散热,适合数据中心。单队列(256命令)多队列(64K队列)多队列(256命令)双端口冗余,高可靠性。高密度服务器 SSD。

2025-04-10 15:37:43 265

原创 【论文解读 |资源竞争】TC‘2024 Analysis and Mitigation of Shared Resource Contention on Heterogeneous Multicore

异构多核计算平台因其能够提供显著的性能提升,同时满足尺寸、重量和功耗(SWaP)约束,所以在安全关键的网络物理系统(CPS)中越来越受到青睐。例如在自动驾驶汽车、无人机等应用中,这些平台可以在有限的空间和能源消耗下,实现高效的计算性能,以支持各种复杂的算法和实时数据处理任务。

2025-03-17 00:39:50 776

原创 【Linux 内核 | 操作系统 | 内核编译】内核编译中与锁调试相关的设置有哪一些?内核 Debug 选项中 LockDep 和其他锁调试选项详解

未启用,内核无法主动检测锁顺序错误,可能遗留潜在的死锁隐患。)未启用,无法捕获锁的非法操作(如错误释放)。会引入性能损耗(尤其是高锁竞争场景),建议仅在。获取锁的竞争统计信息,难以定位高竞争锁。若需在生产环境调试,可选择性启用。,但需评估对系统吞吐量的影响。特定锁类型的调试选项(如。

2025-03-14 22:15:28 547

原创 【论文阅读 | 瓶颈定位】OSDI 2024 Identifying On-/Off-CPU Bottlenecks Together with Blocked Samples 系列1 - 简要解读

论文提出了一种新的采样技术“blocked samples”,用于同时捕捉,以解决传统分析器在识别现代应用程序性能瓶颈时的不足。基于这一技术,开发了两个分析器bperf和BCOZ,用于识别性能瓶颈并评估优化的潜在影响。

2025-03-10 23:14:32 289 1

原创 【内存泄漏 | 论文速读】Automated Memory Leak Diagnosisby Regression Testing

核心问题 :如何在开发阶段高效检测内存泄漏,减少生产环境中的修复成本?:通过比较软件新旧版本(v_old和v_new)的内存分配/释放行为差异,定位新引入的泄漏。

2025-02-27 20:02:08 848

原创 【论文速读 | 通俗理解】DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning

本文主要通俗理解一下 DeepSeek-R1 的论文内容,具体细节还是要看论文里面描述的为准。

2025-02-27 16:25:57 926

原创 【操作系统、数学】什么是排队论?如何理解排队论?排队论有什么用处?Queueing Theory?什么是 Little’s Law?

【在排队论中,Kendall记号 (Kendall's notation)是一种用于标准化描述排队模型的符号系统,由英国数学家David G. Kendall于1953年提出。:20世纪中期,随着计算机和通信技术的兴起,排队论成为运筹学和系统科学的重要分支,被扩展应用于更复杂的场景。假设顾客到达时间间隔服从指数分布,到达率为λ(单位时间到达的顾客数)。:服务时间服从参数为μ的指数分布,服务率为μ(单位时间服务的顾客数)。【单服务台,到达为泊松过程(M),服务时间为指数分布(M),无限容量。

2025-02-26 22:25:35 1079

原创 【力扣 - 简单题】88. 合并两个有序数组

舍友看我写小学编程题,然后嘲笑我:)

2025-02-12 23:21:56 270

原创 【万字长文解读锁1】【论文阅读 | TOCS】Lock–Unlock: Is That All? A Pragmatic Analysis of Locking in Software Systems

在过去的25年中,为了缓解与临界区和锁相关的性能瓶颈,研究者们设计了大量的优化互斥锁算法。然而,目前尚缺乏对这些优化锁算法在实际应用中的行为进行全面研究,尤其是考虑到不同性能指标(如能效和尾延迟)的情况。本文旨在对同步机制进行深入且实用的分析,旨在为软件开发人员提供足够的信息,以设计出快速、可扩展且高效的同步机制。首先,我们在四种不同的多核机器上,对28种先进的互斥锁算法在40个应用中的性能进行了研究。我们不仅考虑了传统的性能指标——吞吐量,还关注了日益重要的能效和尾延迟。

2025-01-31 15:21:13 518

原创 【计算机体系结构、微架构性能分析】core 与 uncore 分别是哪一些部分?区分 core 和 uncore

指的是处理器中的计算核心,是执行指令和处理数据的基本单元。:服务器处理器(如Intel Xeon、AMD EPYC)的Uncore部分通常更复杂,以支持更多的核心和更高的内存带宽。:现代处理器(如Intel的Core系列、AMD的Ryzen系列)通常包含多个核心和复杂的Uncore部分。:Core 的性能决定了单线程任务的执行速度,而 Uncore 的性能影响多核处理器的扩展性和整体效率。Core 和 Uncore 共同决定了处理器的性能、功耗和扩展性,是现代处理器设计中不可分割的两部分。

2025-01-16 14:21:11 1030

原创 【2024总结】 2024 年终总结 —— 破冰计划±

2024 年过得真快,这一年是忙忙碌碌但没有收成的一年,也是导致情况越来越坏的一年。尽管是努力去回想这一年所发生的所有的事情,也没有什么想起什么有意义、又或者是重要的事情。每个人都会对自己的人生有所衡量,无论这个人成功与否,或多或少都会有那么一些想法,对自己的当下、以前、未来有所期望。更多的是,人应该学会,让每天的自己成长一些。再慢一点,一年至少要有一些成长,这也是可以的。唯一让自己有所欣慰的是,在表达上,自己迈出了一步,良好的开始是成功的一半。可见,这是灰色的一年,也是自己逃避的一年。

2025-01-05 15:45:06 215

原创 【性能工程 - eBPF 技术】什么是 kprobe 和 uprobe?一文详解 kprobe 和 uprobe 奥秘

详解 eBPF 中的 kprobe、 uprobe、kretprobe、 uretprobe。

2024-12-07 23:59:33 859

原创 【Linux 内核构建】如何查看 Linux 系统中可以选择的内核有哪一些?如何切换 Linux kernel 版本?

在折腾内核版本时,遇到的问题,遂将各方面的答案整理在一起。

2024-09-08 00:26:35 576

原创 【Linux 运维知识】Linux 编译后的内核镜像大小

Linux 内核镜像的大小取决于多个因素,包括内核的版本、启用的功能、模块的数量以及特定的编译配置。

2024-09-07 13:57:49 822

原创 【操作系统 OS】什么是Linux CFS?完全公平调度器是什么?

时钟中断驱动:CFS 的调度检查主要由时钟中断触发,定期执行。红黑树的角色:红黑树帮助 CFS 快速找到最需要 CPU 时间的进程。vruntime:是调度决策的核心指标,反映进程的 CPU 使用时间。公平性:通过不断地选择vruntime最小的进程,CFS 尽可能地实现 CPU 时间分配的公平性。CFS 通过这种机制平衡了系统中所有进程的 CPU 使用,使得所有进程都能按照其优先级和需要公平地获得运行机会。

2024-07-30 22:58:58 1062

原创 【性能工程 - eBPF 技术】小白也能学会的 eBPF 技术(二)—— 什么是 Ring Buffer?【1】

定义:Ring Buffer是一种固定大小、头尾相连的缓冲区,它允许数据以循环的方式在缓冲区中存储和读取。原理:在Ring Buffer中,数据的写入和读取操作是通过移动指针(如头指针和尾指针)来实现的。当数据被写入时,尾指针向前移动;当数据被读取时,头指针向前移动。当尾指针追上头指针时,表示缓冲区已满,此时新的数据会覆盖最旧的数据。也就是说,ring buffer 和我们所用的双向链表形态类似,支持存储和读写。不一样的是使用场景和名字。(当然,程序员可能最喜欢的操作之一,可能就是命名!

2024-07-11 00:49:50 842

原创 【性能工程 - eBPF 技术】小白也能学会的 eBPF 技术——初步了解 eBPF 技术(一)

eBPF技术以其高度的灵活性、安全性以及低开销的特点,正在成为现代云原生、容器化环境、以及需要高性能监控和安全控制场景下的关键技术。随着持续的发展和社区的支持,eBPF的应用前景非常广阔。

2024-07-10 21:38:01 930

原创 【Linux 基础】df -h 的输出信息解读

tmpfs (/sys/fs/cgroup):这是用于 cgroup(控制组)管理的 tmpfs。详细的来讲, /sys/fs/cgroup 是 cgroup 文件系统的挂载点。例如,可以创建新的 cgroup、配置资源限制(如内存限制、CPU 限制),以及查看当前 cgroup 的资源使用情况。目录用于存储系统和应用程序的锁文件。tmpfs(/run/user/1000):这是为用户 1000(通常是当前登录用户)分配的 tmpf。tmpfs (/run/lock):是一个用于锁文件的 tmpfs。

2024-07-08 23:24:02 1339

原创 【论文速读 | USENIX Security‘2022】Debloating Address Sanitizer

在程序的内存访问点(如加载和存储指令)插入额外的检查代码,这些代码会在运行时检查影子内存,以确定对应的内存访问是否有效。:对 ASan 的运行时活动、状态进行了详细的分类和测量,识别出 sanitizer 检查是导致高开销的主要原因。:如果在影子内存中发现异常(例如,访问了未初始化或已释放的内存),ASan 将报告错误并可能终止程序执行。ASan 是一种广泛使用的内存错误检测工具,但因其开销较大,限制了其在更多场景下的应用。:它集成了多种优化措施,旨在减少 sanitizer 检查,从而降低开销。

2024-06-08 12:27:41 904

原创 【论文速读 | ASPLOS‘24】Merlin: Multi-tier Optimization of eBPF Code for Performance and Compactness

论文主要解决的问题是如何对 eBPF(扩展的 Berkeley Packet Filter)代码进行多级优化,以提高其在 Linux 内核中的性能和紧凑性。eBPF 是一种在内核中运行的虚拟机,它允许用户以安全的方式执行自定义程序,用于观察、分析和修改内核行为。然而,由于 eBPF 程序在执行前需要通过内核的严格验证,并且受限于指令数量和程序长度,这导致在不牺牲安全性的前提下进行性能优化成为一个挑战。

2024-06-07 15:35:27 412

原创 【版本标记 | Github】Github 中常见的版本标记(Tags)有哪一些?分别在什么情况下使用?

无论是自己自由开发项目还是公司协同合作,随着软件的迭代升级,都需要一个比较规范(好区分)的标记来区分不同的软件版本。通常,我们使用不同的数字来表示不同的版本,例如大版本号加上小版本号等,不同的开发者会根据特殊的场景,对每个位数表述的含义进行定义。但往往还会有一些会放在这些数字前后,本文简要说明其作用和使用场景。

2024-05-26 20:25:34 641

原创 【数学】算术平均、几何平均、调和平均的区别与使用

算术平均适用于一般情况,特别是在数据分布均匀且没有极端值时。几何平均适用于计算比例变化和乘法关系的数据,例如 SPEC CPU 中多个 Benchmarks 的结果聚合成一个值,这里每一个数值本身是比例的关系。调和平均适用于处理速率和比率型数据,如平均速度和每单位成本。

2024-05-22 20:51:55 2030

原创 【开发 | 环境配置】解决 VSCode 编写 eBPF 程序找不到头文件

在使用 vscode 编写 eBPF 程序时,如果不做一些头文件定位的操作,默认情况下头文件总是带有“红色下划线”,并且大部分的变量不会有提示与补全。在编写代码文件较小时(或者功能需求小时)并不会带来不方便。但在长时间编写以及多个程序文件都在使用时,无法补全和提示也影响着编程。

2024-05-21 19:09:33 632

原创 【论文 | Latex】ACM Latex 模版中 \documentclass[acmsmall,nonacm]{acmart} 中参数有哪一些?分别什么作用?

要使用 ACM 提供的模版格式,但不想直接将 ACM 中的版权内容显示在脚注部分。例如:某个任务或者提交要求说中参考 ACM Template。通过检索,找到了如下一系列的选项和用法:文档格式:版权信息控制:审稿和摘要选项:其他功能选项:例如,我现在需要一个双盲审稿的提交稿件,可以会使用如下命令:

2024-05-04 20:37:41 1020

原创 CSDN 2023 年度总结

实际上,最近两年很少从 CSDN 上写博客,也不是完全丢失了写博客的习惯,只是学的东西多起来后,习惯性的在个人笔记中做了记录,一是没时间去整理,二是周末想休息会,因此每次都会有整理的冲动,又被懒惰的自己搁置掉。刚翻看了一整年的记录,写整整9篇文章,与之前形成强烈对比,这是不是一个坏事呢,也不好说,毕竟写博客的目的是为了让自己能力得到提升,如果找到了更好的方法,从而放弃不适合自己方法,也不是过错。年度总结,好像没有内容,也没有什么必要总结。忙忙碌碌的一年,又是空空荡荡的一年。新的一年,再接再厉。

2024-02-02 15:45:35 442

原创 【Python】DataFrame 使用 concat 横向拼接出现两行问题

在使用 DataFrame 中 concat 横向拼接两个只有一行的 DataFrame 时,最终的结果有两行。如下图:原始的 df 分别为:指定横向合并后是:这里可以看到是横向拼接了,但是并没有真正意义的横向拼接,而是把多出的字段自动填充了 NaN,保留了原来的索引。

2024-01-08 15:16:21 658

原创 【React | 前端】在React的前端页面中,判断某个变量值是否被定义?根据是否定义显示不同的内容?

在React的前端页面中,判断某个变量值是否被定义?根据是否定义显示不同的内容?

2023-08-11 14:41:02 1450

原创 【操作系统基础】Linux 中 /var/log/ 文件夹下通常有哪一些文件?分别的作用是什么?

总之,Linux系统中的/var/log/文件夹下包含了大量的日志文件,这些文件记录了系统的各种活动和事件,对于系统管理员来说非常重要。除了上述提到的常见日志文件之外,/var/log/ 文件夹下还可能包含其他的日志文件,具体取决于系统的配置和使用情况。在Linux系统中,/var/log/ 文件夹通常包含了系统日志文件,这些文件记录了系统的各种活动和事件,以便管理员进行故障排除和监控。syslog:记录系统的各种事件和消息,包括系统服务的启动和停止、应用程序的错误信息等。

2023-07-31 19:44:15 2057 2

原创 【Bug修复】有效解决:Failed to load module “canberra-gtk-module“

【代码】【Bug修复】有效解决:Failed to load module "canberra-gtk-module"

2023-07-17 15:42:03 1212

原创 【性能优化工具】带你了解 Linux perf

Linuxperf(性能剖析器)是一个功能强大的性能分析工具,用于帮助开发人员诊断、调优和监控Linux系统及应用程序的性能问题。它实现了基于硬件性能计数器(hardwareperformancecounters),追踪点和软件测量等多种数据收集手段,以便分析系统中各种现象。perf工具集成在Linux内核中,主要通过perf_event子系统实现。

2023-06-22 15:56:50 837

原创 【JS基础】JS中 Let 和 Const 变量区别

JS中中的变量申明问题。

2023-06-18 21:14:38 387

原创 【Linux 知识】什么是文件句柄 File Handle?

文件描述符(File Descriptor):文件描述符是文件句柄的一部分,它是一个非负整数,用于标识打开的文件。在编写应用程序时,需要注意文件句柄的使用,避免打开过多的文件句柄,从而导致系统的文件描述符资源紧张。文件句柄用于标识打开的文件,每个打开的文件都有一个唯一的文件句柄。当打开一个文件时,操作系统会为该文件分配一个文件句柄,并将其返回给应用程序。文件位置指针(File Position Pointer):文件位置指针用于标识文件中的当前位置,应用程序可以使用它来读取或写入文件。

2023-04-04 10:18:56 1555

原创 【Golang报错】100% 解决 json: cannot unmarshal array into Go value of type model.xxx 问题

在 go 项目中,查询数据时,获取不到数据。请求失败。根据 go 项目的日志,获得如下报错信息。

2023-03-06 22:09:35 2249

原创 99%有效解决- Mac双屏时程序坞(任务栏)跑到副屏

如何有效解决Mac任务栏乱跑问题?

2023-03-06 08:58:19 11547 3

原创 【Python报错】有效解决pip3安装matplotlib!

解决安装 matplotlib 报错

2023-02-12 16:14:17 1658

原创 100% 解决 git status 中文乱码问题

在使用 git status 查看 repo 里面更新的中文文件名的文件时,出现其他编码的显示,影响添加 正确的 commit 信息。

2022-12-22 16:32:22 293

原创 【Plt 绘图保存错误】AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘

使用 plt.savefig() 时报错:AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘Matplotlib 的版本过高,需要降低:

2022-11-02 16:36:34 510

原创 【论文阅读】SyncPerf: Categorizing, Detecting, and Diagnosing Synchronization Performance Bugs

本次是初步写论文记录,以翻译为主,后续会更改为只讲述核心思想。欢迎访问 Github :https://github.com/MercuryLc/paper_reading本论文讲解了如何检测、诊断锁的争用带来的性能问题。尽管具有明显的重要性,但与同步原语相关的性能问题仍然缺乏足够的关注。没有文献广泛调查此类性能问题的类别、根本原因和解决策略。 现有的工作主要集中在一种类型的问题上,而忽略了其他重要的类别。

2022-10-22 20:30:20 769 1

空空如也

空空如也

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

TA关注的人

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