chiacyu

@chiacyu

Joined on Jul 15, 2020

  • contributed by < chiacyu > What is XDP? XDP(Express Data Path)是一種基於 ebpf (Extended Berkeley Packet Filter) 的高速資料傳輸技術,可提供高效率的封包處理服務。 What is ebpf ebpf 簡介 ebpf (Extended Berkeley Packet Filter) 則是運行於 Linux 核心內部的虛擬機器(virtual machine)使用者可自行撰寫 ebpf 程式並透過相關 API 載入。不同 program type 則提供不同的功能,有些可用於系統功能的量測與紀錄系統呼叫的次數等等。 image
     Like  Bookmark
  • contributed by < chiacyu > CMWQ 解讀 從文章的描述可以看到作者主要提到幾個問題 原本的workqueue無法在多個不同的 CPU 核之間互相搬移任務 原本的 Multi-thread workqueue 必須保持跟 CPU 核心一樣數量的 worker 可能會造成資源的浪費 Work item之間必須彼此競爭可能導致更多的延遲 透過 CMWQ 希望能夠作到除了能兼容原先的實做之外還做了一些修改包括
     Like  Bookmark
  • 測驗α α - 1 解釋上述程式碼運作原理 測驗β β - 1 解釋程式碼的運作行為 #include <stdint.h> static inline uintptr_t align_up(uintptr_t sz, size_t alignment) { uintptr_t mask = alignment - 1; if ((alignment & mask) == 0) { /* power of two? */
     Like  Bookmark
  • contributed by < chiacyu > 測驗 1 在 pool_init 的過程中,需要透過一個 meta data 的資料結構來記錄這個 block 裡面的資訊,因此若是 size 小於 header_size 就會返回失敗。 bool pool_init(void *addr, int size) { if (!addr) /* not a valid memory address */ return false;
     Like  Bookmark
  • contributed by < chiacyu > 實驗環境 $ gcc --version gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 48 bits physical, 48 bits virtual
     Like  Bookmark
  • contributed by < chiacyu > 課程回顧與自我檢討 在寫作業的過程不斷檢視自己無論是對於工具的熟悉程度,以及不斷的問自己到底知不知道要做什麼事情。而不是胡亂剪貼程式碼硬湊出結果。這邊可以列出主要的進步。 :::success 了解有那些工具可以使用以及如何查詢方法(gdb, GNUPLOT...) 了解正確的查詢資料的方式(manuel page, ISO C standard, The C Programming Language...) 了解大型軟體的合作機制(coding style...)
     Like  Bookmark
  • contributed by < chiacyu > 開發環境 $ gcc --version gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian Address sizes: 39 bits physical, 48 bits virtual
     Like  Bookmark
  • contributed by < chiacyu > 測驗 1 考慮 next_pow2 可針對給定無號 64 位元數值 x,找出最接近且大於等於 2 的冪的值 uint64_t next_pow2(uint64_t x) { x |= x >> 1; x |= x >> 1; x |= x >> 1;
     Like  Bookmark
  • contributed by < chiacyu > 測驗1 給定 list.h 作為〈linked list 和非連續記憶體操作〉提及的 Linux 核心風格 circular doubly-linked list 實作,欲處理的節點採用以下結構體: #include <stdint.h> #include "list.h" struct item { uint16_t i;
     Like  Bookmark