RISC-V on the Performance Top

RISC-V PMU - Past, Present and Future

Past Previous PMU Evolution Implementation Details Present Sscofmpf CSRs Control Transfer Records (CTR) Smcdeleg...

Intel PMU高级功能

Processor Event-Based Sampling (PEBS) Last Branch Record (LBR) 使用场景 使用方法 Intel Processor Trace 使用场景 使用方法 引用 Processor Event-Based Sampling...

追踪PR_SET_THP_DISABLE

背景 简单分析 追踪 总结 背景 在sophgo 2042上测试lkp vm-scalability里面的anon-wx-rand-mt用例时出现regression,主要是调用一个usemem的程序 case 1 - 通过lkp跑能重现性能差的问题,lkp run anon-wx-rand-mt.yaml case 2 - 直接跑usemem性能很好,us...

Tracepoint syscalls

起因 代码 总结 起因 在试用riscv libbpf-bootstrap的时候,发现/sys/kernel/debug/tracing/events/syscalls不存在,导致相应工具不能使用。 代码 syscalls tracepoint的定义 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...

Bpftrace on RISC-V

目的 简单验证bpftrace在riscv上的支持情况,为以后使用bpftrace作准备。 编译 我们这里选取branch 0.19.1_release,并且根据INSTALL.md先安装好编译所需的包。 1 2 3 4 5 6 7 8 $ git clone https://github.com/iovisor/bpftrace $ cd bpftrace $ git checko...

利用QEMU发现可优化指令的通用方法

起因 一些想法 验证想法 通用化 起因 看到Svvptc proposal的一封邮件 Feedback Request on Svvptc Extension Proposal,里面提到sfence.vma指令执行太多有优化空间。 1 2 3 4 5 6 7 8 9 10 11 12 +--------------------------+------+----...

QEMU统计动态指令

工欲善其事,必先利其器

使用方法 实现简介 简单验证 工具设计 获取count地址 inline模式统计 percpu模式统计 使用效果 qemu tcg使用二进制翻译执行代码,用来统计动态指令再合适不过,甚至可以获取比真实硬件更详细的信息。理论上在guest内部通过perf tools来获取动态指令数也是可行的,不过至少...

QEMU做RISC-V开发

工欲善其事,必先利其器

下载RISC-V镜像 启动QEMU 简单内核调试 很多情况QEMU都是系统开发的好选择,甚至时最好的选择。 对于现在的RISC-V开发来说更是如此,各种新的指令集非指令集扩展不停的发布,QEMU是支持的最早基本也是最好的平台。 下载RISC-V镜像 Ubuntu较早支持RISC-V,同时镜像发布比较正规也很容易搜到 https://cdimage.ubuntu....

MSTATUS_SUM对QEMU性能的影响

SUM简介 SUM in mstatus SUM的作用 内核对SUM的使用 性能测试 性能分析 解决方法 Qemu softMMU 最终解法 优化效果 SUM简介 SUM in mstatus SUM是mstatus的18位, sstatus是mstatu...

快速支持新指令

问题 可能方法 实现逻辑 问题 目前riscv的硬件往往落后于spec,比如我们手上的板子支持gc,并不支持b扩展,如果软件已经使用了b扩展指令,我们怎么把它跑起来? 直接运行的话可能是收到sigill后退出,我们需要在软件上想办法。 可能方法 我们大致有如下方法: 通过qemu执行,肯定是可行的,但是overhead很大,而且依赖库等等也需要处理 通过其他...