diff options
author | Sergey Nazaryev <sergey@nazaryev.ru> | 2018-11-07 04:37:36 +0000 |
---|---|---|
committer | Sergey Nazaryev <sergey@nazaryev.ru> | 2018-11-07 04:37:36 +0000 |
commit | ae8ca1989317986d25c8441c5fc489bb712b180a (patch) | |
tree | d450386ec15c4e1e0cef653fa34e69b13a1c42e5 /README.md | |
parent | 59ae1c08b4dd658aed79f53856128e53d5ea871e (diff) | |
download | ifstat-ae8ca1989317986d25c8441c5fc489bb712b180a.zip ifstat-ae8ca1989317986d25c8441c5fc489bb712b180a.tar.gz ifstat-ae8ca1989317986d25c8441c5fc489bb712b180a.tar.bz2 |
README.md: cosmetic fix
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 21 |
1 files changed, 11 insertions, 10 deletions
@@ -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 и был выбран. |