From ae8ca1989317986d25c8441c5fc489bb712b180a Mon Sep 17 00:00:00 2001 From: Sergey Nazaryev Date: Wed, 7 Nov 2018 04:37:36 +0000 Subject: README.md: cosmetic fix --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 6396912..173f209 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,9 @@ ifstat ## Установка Целевая система: Debian 9 (stretch), amd64 -Процесс установки проверен вручную с помощью Vagrant (образ `debian/stretch64`) + +Команды установки и запуска проверены вручную через Vagrant (образ +`debian/stretch64`) ```shell echo "deb http://deb.debian.org/debian stretch-backports main contrib non-free" | sudo tee /etc/apt/sources.list.d/backports.list && \ @@ -59,7 +61,7 @@ sudo ./ifstat.lua # запуск клиента (отображение ста ``` В качестве конфига используется находящийся рядом с `ifstatd.lua` -файл `config.lua`. +файл `config.lua`: ```lua local _config = { @@ -98,29 +100,28 @@ eBPF вешается на XDP-хук (eXpress Data Path), что позволя написан на Си (`ifstat_kern.c`). Процессом компиляции и инъекцией этого кода в ядро занимается lua-скрипт, основанный на официальных байндингах проекта [bcc][bcc] (это фреймворк упрощает процесс -создания утилит, использующих eBPF). Непосредственно компиляцией -занимается LLVM/Clang. +создания утилит, использующих eBPF). ## Почему я выбрал Lua в качестве вспомогательного языка? 1. Весь критичный к производительности код запускается в ядре и написан на Си, всё остальное (парсинг конфигов и командной строки, инъекция eBPF, вычитка готовых данных, отправка данных - по ubus) можно было написать на любом подходящем для этих задач + по ubus) можно написать на любом подходящем для этих задач языке; - 2. Проект bcc официально поддерживает нативный интерфейс + 2. Проект `bcc` официально поддерживает нативный интерфейс (библиотеку libbcc) для инъекции eBPF в ядро и байндинги к нему поддерживаются непосредственно разработчиком только для Lua и Python -- выбор сильно сужается; - 3. Проект ubus предоставляет только нативный интерфейс и + 3. Проект `ubus` предоставляет только нативный интерфейс и Lua-байндинги; - 4. Идея написать с нуля и поддерживать байндинги для bcc или ubus - для других языков откидывается сразу. + 4. Идея написать с нуля и поддерживать байндинги для `bcc` или + `ubus` для других языков откидывается сразу. -Таким образом, на выбор остаются только Си и Lua. Писать на Lua +Таким образом на выбор остаются только Си и Lua. Писать на Lua обработку конфигов и сериализацию/десериализацию данных значительно проще и приятнее, чем на Си, поэтому Lua и был выбран. -- cgit v1.1