偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一篇帶給你eBpf開(kāi)源項(xiàng)目解析

開(kāi)源
WebAssembly的設(shè)計(jì)目標(biāo)是為了解決Web上應(yīng)用程序的性能問(wèn)題,尤其是在使用JavaScript等高級(jí)語(yǔ)言編寫的復(fù)雜Web應(yīng)用中。

前置知識(shí):

  • WASM:WebAssembly(縮寫為Wasm)是一種低級(jí)的、與平臺(tái)無(wú)關(guān)的二進(jìn)制指令格式,是一種新型的虛擬機(jī)技術(shù),可以在現(xiàn)代Web瀏覽器中運(yùn)行,并且可以與JavaScript等其他Web技術(shù)一起使用。它被設(shè)計(jì)為一種可移植的編譯目標(biāo),能夠?qū)⒉煌幊陶Z(yǔ)言的代碼編譯成WebAssembly字節(jié)碼,這些字節(jié)碼可以在Web瀏覽器中快速加載和執(zhí)行。

WebAssembly的設(shè)計(jì)目標(biāo)是為了解決Web上應(yīng)用程序的性能問(wèn)題,尤其是在使用JavaScript等高級(jí)語(yǔ)言編寫的復(fù)雜Web應(yīng)用中。相比于JavaScript等腳本語(yǔ)言,WebAssembly的執(zhí)行速度更快,且能夠提供更好的性能和安全性,同時(shí)也更加適合進(jìn)行密集計(jì)算和高性能圖形處理等操作。除了在Web瀏覽器中使用,WebAssembly還可以在其他環(huán)境中運(yùn)行,如桌面應(yīng)用程序、移動(dòng)應(yīng)用程序等,因此它也被認(rèn)為是一種通用的、可移植的虛擬機(jī)技術(shù)。

A stack-based virtual machine is a type of virtual machine architecture in which the operands for instructions are pushed onto a stack, and the instructions themselves operate on the top elements of the stack. In other words, the virtual machine uses a stack to store data and operands, and the instructions are executed based on the data at the top of the stack.

  • WASI:WebAssembly System Interface(縮寫為WASI)是一個(gè)標(biāo)準(zhǔn)化的API接口,它提供了一種通用的系統(tǒng)接口,使得WebAssembly程序能夠在不同的操作系統(tǒng)和硬件平臺(tái)上運(yùn)行,并能夠訪問(wèn)底層操作系統(tǒng)的資源和功能,如文件系統(tǒng)、網(wǎng)絡(luò)、定時(shí)器等。
  • eBPF:(Extended Berkeley Packet Filter)是一個(gè)內(nèi)核級(jí)別的虛擬機(jī)技術(shù),它可以動(dòng)態(tài)地注入用戶自定義的程序代碼到內(nèi)核中運(yùn)行并關(guān)聯(lián)事件,并在不修改內(nèi)核源代碼的情況下增強(qiáng)內(nèi)核的功能。eBPF 可以監(jiān)控和分析內(nèi)核和用戶空間的事件,從而實(shí)現(xiàn)高效的性能分析、網(wǎng)絡(luò)抓包、安全監(jiān)控和資源管理等功能。

eBPF 能夠工作的原理是通過(guò)在內(nèi)核中注冊(cè)各種鉤子函數(shù),這些鉤子函數(shù)會(huì)在特定的事件發(fā)生時(shí)被觸發(fā),并執(zhí)行 eBPF 程序來(lái)處理這些事件。eBPF 程序是一種特殊的字節(jié)碼格式,可以在用戶空間編寫,然后通過(guò)內(nèi)核的加載器加載到內(nèi)核中運(yùn)行。eBPF 程序可以訪問(wèn)內(nèi)核中的數(shù)據(jù)結(jié)構(gòu),并對(duì)數(shù)據(jù)進(jìn)行修改或過(guò)濾。

在云原生環(huán)境下,ebpf更有優(yōu)勢(shì)。

可關(guān)聯(lián)event類型:

Entry to/Exit from Functions:kprobe,kretprobe,uprobe,uretprobe
Tracepoints:/sys/kernel/debug/tracing/events
Perf Events
Linux Security Module Interface
Network Interfaces:XDP
Sockets and Other Networking Hooks
  • Bcc:bcc(BPF Compiler Collection)是一個(gè)用于生成eBPF(extended Berkeley Packet Filter)程序的工具集,它提供了一組高級(jí)工具和庫(kù),使得用戶可以輕松地編寫和調(diào)試eBPF程序。

Starship的架構(gòu)

1、agent

├── cmd 入口函數(shù)

├── deployer 部署eBpf+wasm模塊

├── driver 運(yùn)行模塊

├── ebpf eBpf相關(guān)

├── proc-info 收集process信息

└── wasm wasm處理信息

兩大塊功能:

1、模塊管理,模塊指的是eBpf+wasm。

2、進(jìn)程信息上報(bào)。

Agent的標(biāo)識(shí)是NodeName和agent PodID。這兩個(gè)是從kubernetes注入的:

另外,還掛載了主機(jī)的/和/sys,用于bcc工具和process監(jiān)控。

因?yàn)橐褂胑bpf program和監(jiān)控進(jìn)程,所以需要特權(quán)。

Agent啟動(dòng)后,首先會(huì)清除之前部署過(guò)的TricorderProbes trap。然后,程序使用 linux_headers 包中的 Init 函數(shù)初始化 BCC 的 Linux 頭文件。之后,grpc連接到api-server、連接到pg、開(kāi)啟循環(huán)獲取process信息、開(kāi)啟循環(huán)處理module的deploy處理。

由于agent容器掛載了主機(jī)的/sys路徑,因此可以收集節(jié)點(diǎn)上所有的進(jìn)程信息。在這種情況下,grabProcessInfo函數(shù)將搜索主機(jī)的/sys/fs/cgroup目錄,因此,它將能夠收集節(jié)點(diǎn)上所有進(jìn)程的信息。

當(dāng)部署一個(gè)module后,會(huì)開(kāi)啟輪詢:1.從eBPF中讀取數(shù)據(jù)。2.將數(shù)據(jù)復(fù)制到WASM中。3.從WASM中讀取結(jié)果。4.將json結(jié)果寫入pg。

2、api-server

├── cmd 入口函數(shù)

├── grpc 處理deploy和process的grpc調(diào)用

├── http 定義http路由,dao

├── meta 原生kubernetes監(jiān)控資源

├── pb protobuf定義

├── testing 測(cè)試

├── utils 工具

└── wasm 編譯

目前部署為StatefulSet,但是卷類型是emptyDir,也就是每次會(huì)新建一個(gè)tricorder.db文件。

然后啟動(dòng)的時(shí)候進(jìn)行初始化。

Api-server主要功能有:agent管理,管理模塊的部署,獲取節(jié)點(diǎn)進(jìn)程信息,數(shù)據(jù)展示,數(shù)據(jù)持久化(sqlite)。

在部署模塊時(shí),各agent的moduleInstance持久化保存成功后,會(huì)觸發(fā)cond條件,這時(shí)才會(huì)去各agent去部署。同時(shí),會(huì)在pg創(chuàng)建相應(yīng)的數(shù)據(jù)表,供agent進(jìn)行數(shù)據(jù)存儲(chǔ)。

在api-server的部署中,使用名為api-server的sa,這個(gè)sa具備所有resource的權(quán)限。

Api-server同時(shí)監(jiān)測(cè)原生kubernetes資源,目前有:

這些資源是通過(guò)informer監(jiān)測(cè)的,api-server會(huì)將監(jiān)測(cè)信息同步至pg。

Api-server會(huì)使用pod informer監(jiān)測(cè)各節(jié)點(diǎn)的pod,然后將這些容器id發(fā)給agent進(jìn)行processInfo獲取,獲取后,由api-server存儲(chǔ)至pg。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2023-02-27 10:17:05

EventBus觀察者模式

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2022-01-14 11:45:40

JVM 虛擬機(jī)Java

2022-01-17 11:28:55

JVM 虛擬機(jī)Java

2022-02-25 15:50:05

OpenHarmonToggle組件鴻蒙

2021-04-23 08:59:35

ClickHouse集群搭建數(shù)據(jù)庫(kù)

2021-07-08 07:30:13

Webpack 前端Tree shakin

2021-04-14 07:55:45

Swift 協(xié)議Protocol

2023-03-13 09:31:04

2021-05-08 08:36:40

ObjectString前端

2021-10-28 08:51:53

GPIO軟件框架 Linux

2021-06-21 14:36:46

Vite 前端工程化工具

2021-01-28 08:55:48

Elasticsear數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)

2023-03-29 07:45:58

VS編輯區(qū)編程工具

2021-04-14 14:16:58

HttpHttp協(xié)議網(wǎng)絡(luò)協(xié)議

2021-04-08 11:00:56

CountDownLaJava進(jìn)階開(kāi)發(fā)

2021-07-21 09:48:20

etcd-wal模塊解析數(shù)據(jù)庫(kù)

2022-03-22 09:09:17

HookReact前端

2024-06-13 08:34:48

2022-04-29 14:38:49

class文件結(jié)構(gòu)分析
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)