Giter VIP home page Giter VIP logo

kernel_new_features's Introduction

🔰 深挖 Linux 内核的新功能特性,以 io_uring, cgroup, ebpf, llvm 为代表,包含开源项目,代码案例,文章,视频,架构脑图等

所有数据来源于互联网。所谓取之于互联网,用之于互联网。

如果涉及版权侵犯,请邮件至 [email protected] ,我们将第一时间处理。

如果您对我们的项目表示赞同与支持,欢迎您 lssues我们,或者邮件 [email protected] 我们,更加欢迎您 pull requests 加入我们。

感谢您的支持!

—— 2019 年 Linux 5.1 内核首次引入的高性能 异步 I/O 框架,能显著加速 I/O 密集型应用的性能。

文档

开源项目

文章

视频(提取码:1024)

🔥 cgroup

—— 限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)。

文档

开源项目

  • containerd/cgroups: 用于创建、管理、检查和销毁cgroup。cgroup上设置的资源格式使用这里找到的OCI运行时规范。
  • mhausenblas/cinf: 一个查看命名空间和cgroups的命令行工具
  • flouthoc/vas-quod: 用Rust编写的一个极小的容器运行时
  • poelzi/ulatencyd: 使用cgroups最小化linux系统延迟的守护进程
  • haosdent/jcgroup: jcgroup是JVM上的cgroup包装器。您可以使用这个库来限制线程的CPU共享、磁盘I/O速度、网络带宽等。
  • kinvolk/traceloop: 使用BPF和可重写的环形缓冲区跟踪cgroup中的系统调用
  • tianon/cgroupfs-mount: 挂载cgroupfs (v1)层次结构的简单(过时)脚本,特别是用于Debian打包的结构化脚本
  • francisbouvier/cgroups: 一个库来管理cgroups Linux内核特性
  • bpowers/mstat: 这个工具运行在Linux上,利用cgroups内核API(也被Docker等容器基础设施使用)来记录一组进程随时间的内存使用情况。

文章

视频

🔥 ebpf

—— Linux 内核中顶级子模块

文档

开源项目

  • cilium/cilium: 用于提供、保护和观察容器工作负载之间的网络连接——云原生,并由革命性的内核技术eBPF提供支持,https://cilium.io/
  • BPF Compiler Collection (BCC): BCC -基于bpf的Linux IO分析、联网、监控等工具
  • bpftrace: Linux eBPF的高级跟踪语言
  • Falco: 一种行为活动监视器,旨在检测应用程序中的异常活动。Falco在ebp的帮助下在Linux内核层对系统进行审计。它通过其他输入流(如容器运行时度量和Kubernetes度量)丰富了收集到的数据,并允许持续监视和检测容器、应用程序、主机和网络活动。
  • Katran: 高性能的四层负载均衡器
  • LLVM Compiler: 一个模块化和可重用的编译器和工具链技术的集合。
  • microsoft/ebpf-for-windows: 运行在Windows上的eBPF实现
  • aquasecurity/libbpfgo: 一个用于Linux ebbpf项目的Go库。
  • aquasecurity/tracee: Linux的运行时安全和取证工具。
  • libbpf/libbpf: libbpf是一个基于C/ c++的库,作为上游Linux内核的一部分进行维护。它包含一个eBPF加载器,它接管处理LLVM生成的eBPF ELF文件,以便将其加载到内核中。
  • libbpf/libbpf-rs: Rust生态系统的最小和固执的epf工具
  • foniod/redbpf: Rust库用于构建和运行BPF/eBPF模块
  • aya-rs/aya: 一个用于Rust编程语言的eBPF库,其构建的重点是开发人员的体验和可操作性。
  • cilium/hubble: 使用eBPF的Kubernetes网络、服务和安全可观测性
  • kubearmor/KubeArmor: 一个云本地运行时安全强制系统,它在系统级别限制容器和节点的行为(如进程执行、文件访问和网络操作)。
  • iovisor/kubectl-trace: 使用kubectl在kubernetes集群上调度bpftrace程序
  • iovisor/ply: 一款基于eBPF的Linux动态跟踪软件。

文章

视频

🔥 llvm

—— 模块化、可重用的编译器以及工具链技术的集合

文档

LLVM命令指南

基本命令

命令 说明
llvm-as LLVM汇编器
llvm-dis LLVM反汇编器
opt LLVM优化器
llc LLVM静态编译器
lli LLVM字节码解释器
llvm-link LLVM字节码连接器
llvm-lib LLVM的与lib.exe兼用的库工具
llvm-lipo 用于处理通用二进制文件的LLVM工具
llvm-config 打印LLVM编译选项
llvm-cxxmap Mangled name重映射工具
llvm-diff LLVM 结构”diff”
llvm-cov 发出覆盖信息
llvm-profdata 配置数据工具
llvm-stress 生成随机的.ll文件
llvm-symbolizer 将地址转换为源代码中的位置
llvm-dwarfdump 转储并检验DWARF调试信息
dsymutil 操作存档文件中的DWARF调试符号文件
llvm-mca LLVM机器码分析器
llvm-readobj LLVM目标文件分析器

GNU bintils替代命令

命令 说明
llvm-addr2line addr2line的替代品
llvm-ar LLVM归档器
llvm-cxxfilt LLVM符合名称分析器
llvm-nm 列出LLVM字节码和目标文件中的符号表
llvm-objcopy 目标文件复制和编辑工具
llvm-objdump LLVM目标文件转储器
llvm-ranlib 库存档索引生成工具
llvm-readelf GNU风格的LLVM对象读取器
llvm-size 打印目标文件尺寸信息
llvm-strings 打印目标文件中的字符串
llvm-strip 目标文件去除调试信息工具

调试工具

命令 说明
bugpoint 自动测试用例缩减工具
llvm-extract 从LLVM模块中提取函数
llvm-bcanalyzer LLVM字节码分析器

开发工具

命令 说明
FileCheck 灵活的模式匹配文件验证程序
tblgen 目标描述到C++代码生成器
lit LLVM集成测试仪
llvm-build LLVM项目构建实用程序
llvm-exegesis LLVM机器指令基准
llvm-pdbutil PDB文件取证和诊断
llvm-locstats 计算DWARF调试位置的统计信息

开源项目

文章

视频

kernel_new_features's People

Contributors

magicboost avatar wangbojing avatar wenchao1024 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kernel_new_features's Issues

示例程序-提交队列轮询.c 执行问题

运行uring的示例程序-提交队列轮询.c 有如下问题:
首先,编译的时候120行会报warning,这个return 0就可以了
test_ioring.cpp:120:1: warning: control reaches end of non-void function [-Wreturn-type]
120 | }

然后,程序运行起来,会提示错误。我的环境是linux 5.4.0
$ sudo ./uring
Kernel thread io_uring-sq is not running.
Error in async operation: Invalid argument
Result of the operation: -22
Error in async operation: Invalid argument
Result of the operation: -22
1363500 ? 00:00:00 io_uring-sq
Kernel thread io_uring-sq found running...
Error in async operation: Invalid argument
Result of the operation: -22
Error in async operation: Invalid argument
Result of the operation: -22
Contents read from file:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.