Try   HackMD

2025q1 Homework1 (ideas)

contributed by < SimonLiu423 >

還政於民的 sched_ext 及機器學習如何幫助 CPU 排程

Link

About

CPU scheduling

  • schedulable unit: task(sched_entity)
  • tasks are run by CPU
  • scheduler pick tests & most suitable CPU to run

CPU Load Balancing

  • Distribute tasks evenly over CPUs.
  • Make overall processing more efficient
  • Optimize response time

SCX (scheduler extension and tools)

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  • eBPF to kernel is like JS to HTML
  • SCX exposes interface for users to implement BPF scheduler
  • Speeds up experiments of scheduling policies
  • Customization
  • Rapid scheduler deployment

Integrate ML into CPU scheduler

  • collect data via kprobe
  • use ML to determine whether to perform task migration or not (can_migrate_task() in Linux Kernel)
Experiment for integrating to SCX
  • Create load imbalance with mixtures of CPU-bound tasks and I/O-bound tasks
  • CPU-bound task: linux kernel compilation
  • I/O-bound task: fio disk I/O task

Questions

  • The experiment only shows that using ML for load balancing is effective when there's a highly CPU intensive task and a I/O intensive task. But what about other cases?

高性能網頁伺服器

About

kHTTPd uses kernel thread to process connections, a new thread is created for each time a new connection occurs.
When there's a large amount of connections, it would spend a lot of time creating threads.

CMWQ (Concurrency Managed Workqueue)

  • Threads are created beforehand
  • Assign tasks to threads directly

Content Cache

  • Uses RCU
  • calculate hash for request url and store in hash table

Introduce timer to cleanup timeout connections

  • Implemented with priority queue
  • Constantly check the queue using another thread and delete timed out connections
  • uses spinlock

打造具備網路連線的精簡虛擬機器

About

  • System VM

    • Need to run OS
    • Need virtualization for hardware
  • Process VM

    • Runs program (e.g. Java VM)
  • Hypervisor

    • Type-1
      • Can access hardware directly
    • Type-2
      • An application running on OS
      • Less efficient than Type-1
  • KVM (Kernel-based Virtual Machine)

    • Make kernel serve as Hypervisor
  • KVM-Host

    • based on KVM
    • simple
    • no network connection
  • VirtIO

    • virtualization standard
    • PCI device
    • Virtqueue

開發無線網路裝置驅動程式