Înapoi la articole →

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 113
  1. Introduction Once when I use gVisor’s rootless mode, I found that non-root user can only be mapped to root in container.

  2. 大模型量化简介

    本文记录下学习大模型量化过程中的过程,本文不涉及高深的各种量化策略以及量化效果对比,只是记录对量化过程的探索。

  3. LoRA微调简介

    大模型微调简介 微调, 指在一个已经预训练好的大模型基础上,使用一个特定任务或领域的较小规模数据集,对该模型进行进一步的训练,让通用的“通才”模型,快速、高效地转变成一个特定任务的“专才”模型,而不需要从头开始训练。

  4. vLLM源码(V0)结构分析

    vLLM使用通常如下(本地推理,非服务): from vllm import LLM llm = LLM(model="facebook/opt-125m") outputs = llm.generate("Hello, my name is") for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text print(f"Prompt: {prompt!

  5. vLLM中的Paged Attention分析

    基本概念 上一篇文章中介绍了KV cache的概念以及作用,由于KV cache在推理中的作用性能提升很大,所以现在各种推理框架都会支持KV cache。

  6. transformer库中的kv cache分析与调试

    这篇文章记录了kv cache到底cache的是啥,以及为啥kv cache能够work。

  7. 背景 最近在学习LLM,网上资料很多,很多都是洋洋洒洒讲了一堆原理,公式、图表一堆,这些当然很重要,但是如果能有系统性的相关代码分析与调试则更能让初学者有直观的体验。

  8. The first is reproduced and modified from here.

  9. lguest internals

    lguest is the simpliest x86 virtualization solution.

  10. Run lguest on Linux kernel 4.4

    Background Recently, I am preparing to study the PVM solution proposed by the Linux kernel expert Lai Jiangshan.

  11. The anatomy of chroot escape

    Recently I have read the old chroot escape methods in Linux.

  12. The issue When we unshare CLONE_NEWPID in a go program, we got an EINVAL error.

  13. The issue I have encountered an interesting issue about capability change through execve syscall.

  14. Why Golang eat my fd 3 in child process

    Recently I analyzed the runc vulnerability CVE-2024-21626.

  15. mount procfs in unprivileged container

    Background gVisor is an application kernel that implements a substantial portion of the Linux system surface. gVisor is mostly used in cloud native as it implements an OCI runtime runsc. runsc uses the application kernel which is named Sentry to run the u…

  16. CVE-2021-3493 is a logic vulnerability in overlayfs filesystem, with a change of Ubuntu, it can be exploited to do privilege escalation.

  17. The spec Path traversal is a classical kind of security issue in computer world.

  18. Container escape using dirtypipe

    Background The story begins with the pictures that Yuval Avrahami shows in twitter.

  19. The cgroup release_agent escape is a classical user mode helper escape issue several years ago.

  20. 今年给自己定了一个研究清楚Java反序列化漏洞的KPI,反序列化漏洞本身原理并不复杂,但是网上的资料都不甚满意,大部分都是只是知道怎么用别人的PoC,并没有对具体的原理做深入的分析和思考,特别是Commons Collections一系列的分析,非常不满意,比如反序列化为什么需要有自己的readObject、为什么AnnotationInvocationHandler的第一个参数为Override.class和Target.class都可以。

  21. runc internals, part 3: runc double clone

    Now that we have analyzed the general process of ‘runc create’ and know that the ‘runc create’ will execute ‘runc init’ parent process, the parent process will clone child process, and the child process will clone a grandchild process, and this grandchild…

  22. runc create analysis We can create a container by run ‘runc create’, for not consider the tty/console, let’s change the default ‘config.json.

  23. runc is the foundation of container technology.

  24. seccomp user notification

    seccomp user notification defers the seccomp decisions to userspace.

  25. hello world driver

    After several years kernel development, I still can’t remember the templeate of driver.

  26. QEMU RCU implementation

    RCU is a synchronization mechanism that firstly used in Linux kernel.

  27. Why ping uses UDP port 1025

    Recently I noticed that the ping source code has an interesting trick.

  28. In full virtualization the guest OS doesn’t aware of it is running in an VM.

  29. My qemu/kvm book has been publicated

    During my study/work of virtualization, I have to dig into the code.

  30. In full virtualization the guest OS doesn’t aware of it is running in an VM.

  31. Linux kernel perf architecture

    Component overview Linux perf subsystem is very useful in performance profiling.

  32. vDPA kernel framework introduction

    Virtual data path acceleration(vDPA) is a new technogy to acclerate the performance (like other hardware offloading).

  33. How eBPF program connects with tracepoint

    In the last post Linux tracing - trace event framework I have discussed the internal of trace event.

  34. Linux tracing - trace event framework

    Sample This post will show the trace event framework.

  35. Linux tracing - kprobe, uprobe and tracepoint

    Background Linux tracing system is confused as there are many faces of tracing.

  36. Linux vsock internals

    Background VM Sockets(vsock) is a fast and efficient communication mechanism between guest virtual machines and their host.

  37. Write eBPF program in pure C

    While developing new eBPF program type, we need do some small test.

  38. cgroups internals

    Concepts Control groups provide a mechanism to group process/tasks to control there behaviour(limit resource for example).

  39. pid namespace internals

    Namespace is another method to abstract resouces.

  40. user namespace internals

    Namespace is another method to abstract resouces.

  41. Background Several months ago, intel made the cloud-hypervisor open sourced.

  42. QEMU uses VFIO to assign physical devices to VMs.

  43. VFIO driver analysis

    The VFIO driver is a framework for exposing direct device access to userspace.

  44. VFIO usage

    VFIO is used to assign a physical IO device to the virtual machine.

  45. intel IOMMU driver analysis

    In the last post IOMMU introduction we have got the basic idea of what is IOMMU and what it is for.

  46. IOMMU introduction

    MMU is used by CPU to translate a virtual address to physical address.

  47. Linux static_key internlas

    static_key introduction There are often a situation that we need to check some switch to determine which code flow to be executed.

  48. KVM async page fault

    apf introduction The qemu/kvm VM’s physical memory is the virtual memory of qemu process.

  49. system call analysis: mount

    The data in disk is just raw bytes, the user need to access these data as file, so there shoud be a layer to abstract this.

  50. glibc system call wrapper

    Introduction glic uses two method to make a wrapper for system calls: one is uses the make-system.sh script to wrap and the other is uses a function and some MACROS to wrap.