Вопросы новичка

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
WideAreaNetwork
сержант
Сообщения: 239
Зарегистрирован: 2017-01-10 14:37:13

Вопросы новичка

Непрочитанное сообщение WideAreaNetwork » 2020-01-15 9:12:23

привет!
иногда не хватает подобной темы, в идеале еще бы прикрепить ее

перейду к вопросу) есть команды для вывода содержимого файла, cat head tail, подскажите пжл ключ к ним или другую утилиту для вывода, нужно чтобы содержимое выводилось с нумерацией строк, либо с конкретным номером строки, дабы не открывать файл целиком и не листать до нужной строки

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-01-15 15:15:13

Варианты разные могут быть...

Код: Выделить всё

man head > head.txt
cat head.txt | awk '{print NR " " $0 }'
или так:

Код: Выделить всё

cat -n head.txt
или так:

Код: Выделить всё

cat head.txt | nl
     1  HEAD(1)                 FreeBSD General Commands Manual                HEAD(1)

     2  NAME
     3       head – display first lines of a file

     4  SYNOPSIS
     5       head [-n count | -c bytes] [file ...]

     6  DESCRIPTION
     7       This filter displays the first count lines or bytes of each of the
     8       specified files, or of the standard input if no files are specified.  If
     9       count is omitted it defaults to 10.

    10       If more than a single file is specified, each file is preceded by a
    11       header consisting of the string “==> XXX <==” where “XXX” is the name of
    12       the file.

    13  EXIT STATUS
    14       The head utility exits 0 on success, and >0 if an error occurs.

    15  EXAMPLES
    16       To display the first 500 lines of the file foo:

    17             $ head -n 500 foo

    18       head can be used in conjunction with tail(1) in the following way to, for
    19       example, display only line 500 from the file foo:

    20             $ head -n 500 foo | tail -n 1

    21  SEE ALSO
    22       tail(1)

    23  HISTORY
    24       The head command appeared in PWB UNIX.

    25  FreeBSD 11.1-STABLE             March 16, 2013             FreeBSD 11.1-STABLE
или так:

Код: Выделить всё

cat head.txt | nl -ba
     1  HEAD(1)                 FreeBSD General Commands Manual                HEAD(1)
     2
     3  NAME
     4       head – display first lines of a file
     5
     6  SYNOPSIS
     7       head [-n count | -c bytes] [file ...]
     8
     9  DESCRIPTION
    10       This filter displays the first count lines or bytes of each of the
    11       specified files, or of the standard input if no files are specified.  If
    12       count is omitted it defaults to 10.
    13
    14       If more than a single file is specified, each file is preceded by a
    15       header consisting of the string “==> XXX <==” where “XXX” is the name of
    16       the file.
    17
    18  EXIT STATUS
    19       The head utility exits 0 on success, and >0 if an error occurs.
    20
    21  EXAMPLES
    22       To display the first 500 lines of the file foo:
    23
    24             $ head -n 500 foo
    25
    26       head can be used in conjunction with tail(1) in the following way to, for
    27       example, display only line 500 from the file foo:
    28
    29             $ head -n 500 foo | tail -n 1
    30
    31  SEE ALSO
    32       tail(1)
    33
    34  HISTORY
    35       The head command appeared in PWB UNIX.
    36
    37  FreeBSD 11.1-STABLE             March 16, 2013             FreeBSD 11.1-STABLE
а про конкретную строку так:

Код: Выделить всё

head -n 10 head.txt | tail -n 1
     This filter displays the first count lines or bytes of each of the
man nl в помощь

WideAreaNetwork
сержант
Сообщения: 239
Зарегистрирован: 2017-01-10 14:37:13

Вопросы новичка

Непрочитанное сообщение WideAreaNetwork » 2020-01-15 21:20:16

Demis писал(а):
2020-01-15 15:15:13
cat -n head.txt
супер, то что надо, большое спс)
иногда в логах показывает ошибку в файлах на такой то строке, и чтобы сразу посмотреть что за строка искал подобную команду

cat -n log.log | grep 35

для истории)

Аватара пользователя
novik
мл. сержант
Сообщения: 146
Зарегистрирован: 2018-07-26 23:52:57

Вопросы новичка

Непрочитанное сообщение novik » 2020-01-15 22:43:51

WideAreaNetwork писал(а):
2020-01-15 21:20:16
супер, то что надо
Один из альтернативных вариантов:

Код: Выделить всё

less +13 -N /var/log/messages
«О сколько нам открытий чудных готовит просвещения дух...»™

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-01-16 12:11:50

WideAreaNetwork писал(а):
2020-01-15 21:20:16
cat -n log.log | grep 35
Только обратите внимание, что греп выгребет "35" при любом вхождении в строку.
Если строка начинается именно на "35", то вернее будет так:

Код: Выделить всё

cat -n log.log | grep '^35'
Символ ^ говорит "начало строки совпадает с 35".

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-01-16 12:34:43

Если опираться на показанный выше пример, то получится:

Код: Выделить всё

cat -n head.txt | grep '10'
    10       This filter displays the first count lines or bytes of each of the
    12       count is omitted it defaults to 10.
Т.е. есть пробелы в начале. Вариант

Код: Выделить всё

cat -n log.log | grep '^10'
Даст "пусто" на выходе, т.к. строка НЕ начинается на 10. Перед "10" есть пробелы. Но можно поступить, например, так:

Код: Выделить всё

cat -n head.txt | sed 's/^[ t]*//' | grep '^10'
10           This filter displays the first count lines or bytes of each of the
Условие "^[ t]" вырежет пробелы и табуляции с начала строки.

WideAreaNetwork
сержант
Сообщения: 239
Зарегистрирован: 2017-01-10 14:37:13

Вопросы новичка

Непрочитанное сообщение WideAreaNetwork » 2020-01-16 13:33:57

спс за помощь, а откуда взяться пробелам в начале строки если команда

Код: Выделить всё

cat -n head.txt
пронумерует их вставляя номера в начале строки?

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-01-16 15:07:46

Они там будут.
Приведенный пример, как раз с пробелами перед нумерацией на выходе.

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-01-16 15:43:34

Почему
Demis писал(а):
2020-01-16 15:07:46
Они там будут.
Все просто.
Вообще если посмотреть исходник cat

Код: Выделить всё

ee /usr/src/bin/cat/cat.c
и найти в нем кусок обработки по "-n" (это будет nflag)

Код: Выделить всё

                        if (nflag && (!bflag || ch != '\n')) {
                                (void)fprintf(stdout, "%6d\t", ++line);
                                if (ferror(stdout))
                                        break;
                        }
видим, что разработчиком принудительно зашито шесть символов

Код: Выделить всё

stdout, "%6d\t", ++line
Теперь идем, например, на http://cppstudio.com/post/1270/ читаем описание

Код: Выделить всё

int fprintf( FILE * stream, const char * format, ... );
...
...
Форматируемые теги должны следовать следующему формату записи:
%[флаги][ширина поля][.точность][длинна]спецификатор
ищем ниже по тексту что такое "ширина":

Код: Выделить всё

ширина 	Описание
number 	Минимальное количество символов для печати. Если значение для печати короче, чем это число, пустые места заполняются пробелами. Значение не обрезается, даже если оно больше number.
Вот отсюда и получаются пробелы...

WideAreaNetwork
сержант
Сообщения: 239
Зарегистрирован: 2017-01-10 14:37:13

Вопросы новичка

Непрочитанное сообщение WideAreaNetwork » 2020-01-16 17:08:24

так глубоко не вникал, даже бы не додумался)

WideAreaNetwork
сержант
Сообщения: 239
Зарегистрирован: 2017-01-10 14:37:13

Вопросы новичка

Непрочитанное сообщение WideAreaNetwork » 2020-02-18 12:35:29

может кто знает поделитесь инфой, в релизах 11 версии и 12 не увидел никаких изменений по dummynet , вопрос собственно один, планируется ли сделать так чтобы он распараллеливался по ядрам? очень этого не хватает

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Вопросы новичка

Непрочитанное сообщение vadim64 » 2020-02-20 16:14:45

у Вас мощность одного из ядер полностью съедается dummynet? можно пруф какой-то?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

WideAreaNetwork
сержант
Сообщения: 239
Зарегистрирован: 2017-01-10 14:37:13

Вопросы новичка

Непрочитанное сообщение WideAreaNetwork » 2020-02-21 9:08:17

при большем трафике больше загрузка, 2*Intel® Xeon® L5420
Вложения
atop.png

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Вопросы новичка

Непрочитанное сообщение snorlov » 2020-02-21 11:14:01

В далекие времена была подобная байда, похоже ее так и не починили, там проблема в высокой загрузки была из-за того, что dummynet прыгал с одного ядра на другое, затраты на переключения были большие, попробуйте привязать этот процесс к конкретному ядру... Хотя я может быть я и ошибаюсь...

WideAreaNetwork
сержант
Сообщения: 239
Зарегистрирован: 2017-01-10 14:37:13

Вопросы новичка

Непрочитанное сообщение WideAreaNetwork » 2020-02-21 11:32:07

snorlov писал(а):
2020-02-21 11:14:01
попробуйте привязать этот процесс к конкретному ядру
есть такое, советуют к 0, но вопрос был в том, делают ли в этом направлении что-то разработчики, так как инфу не нашел

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-02-21 12:26:43

В относительно свежем документе (в тексте оного есть упоминания 2018,2019 годов) https://www.ics.uci.edu/~aburtsev/doc/lxds-usenix19.pdf есть фраза: "We configure the isolated dummy driver with a varying number of cores ranging from one to four in such a manner that one LXD thread runs on each socket of the 4-socket d820 system."
В разделе 5.4.

Этот документ вообще интересно поизучать.

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-02-21 13:06:50

А какого размера MTU у Вас используется на этой машине?

WideAreaNetwork
сержант
Сообщения: 239
Зарегистрирован: 2017-01-10 14:37:13

Вопросы новичка

Непрочитанное сообщение WideAreaNetwork » 2020-02-21 15:31:37

Demis писал(а):
2020-02-21 13:06:50
А какого размера MTU у Вас используется на этой машине?
везде на всех интерфейсах MTU1500
Demis писал(а):
2020-02-21 12:26:43
LXD
а это что такое? документ не читал, так как о dummynet-е ни слова

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-02-21 17:16:37

WideAreaNetwork писал(а):
2020-02-21 15:31:37
везде на всех интерфейсах MTU1500
Demis писал(а): ↑
2020-02-21 12:26:43
LXD
а это что такое?
Про igb(*) столько всего понаписано...
Мама не горюй.

Не уверен, что напишу решение в правильном направлении, но попробуйте просто изучить вопрос.
Это так-же как про LXD, хотя в том-же документе, на первой странице, во втором абзаце, написано :

Код: Выделить всё

Lightweight Execution Domains (LXDs) 
Но вообще хочу высказаться про MTU9000 и hw.igb.num_queues=3.
Мне нужно было сделать производительность сетевого стека.
В моем случае это помогло.
Какая цифиря будет нужна для Вашего случая, сказать не могу.
Вопрос индивидуальный.
Почему у меня так настроено немного написано в посте:
freebsd-f8/strannaya-problema-s-zfs-i-s ... ml#p377009
Даминет вкомпилированный.
При изучении вопроса пользовался примерно такой информацией, с полным прочтением оной от начала до конца, как:
https://forum.nag.ru/index.php?/topic/5 ... ent=603585
https://wiki.freebsd.org/NetworkPerformanceTuning
https://www.opennet.ru/openforum/vsluhf ... 95555.html
https://dadv.livejournal.com/139170.html
Читайте, думайте, пробуйте и пишите...

WideAreaNetwork
сержант
Сообщения: 239
Зарегистрирован: 2017-01-10 14:37:13

Вопросы новичка

Непрочитанное сообщение WideAreaNetwork » 2020-02-21 17:49:57

это все прочитано)
Demis писал(а):
2020-02-21 17:16:37
Но вообще хочу высказаться про MTU9000 и hw.igb.num_queues=3.
Мне нужно было сделать производительность сетевого стека.
В моем случае это помогло.
стоит БРАС потому мту менять не стоит

я спрашивал есть ли работы в сторону распараллеливания по ядрам шейпера dummynet? так как на сегодня он однопоточен, и тут ничего не остается как ставить еще один БРАС или более мощное железо, а вот если бы оно параллелилось , то даже старые серваки вполне пригодны были бы

варианты подсказали, к примеру прибиванием шейпера к 0 ядру, еще можно исходящую скорость от абонента не шейпить вообще

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-02-21 18:57:01

Я наверное чего-то не догоняю.
Ведь народ наоброт пытается "вогнать/ужать" в одно русло.
Т.е. изначально пошла проблематика когда в железе появились треды и ядра.

Другими словами софт, включая даминет, уже сейчас написан с распараллеливанием, а как-же иначе ядро-то у Вас amd64.
Ваш пример из топа это наглядно рисует.

Но это потянуло цепочку других проблем "как с этим жить"?
Поэтому и начались эксперименты с обуздыванием этой ситуевины.
(Взять например прописывание в коде меток идентификаторов от прерываний того-же igb, для привязки к ядрам).

Команды вида

Код: Выделить всё

cpuset -l 0 -t $(procstat -t 0 | awk '/dummynet/ {print $2}')
именно это, принудительный "вгон" в одно ядро, и делают.
Но это, на мой взгляд, пример команды показывает обратный процесс, т.е. от многоядерности -> одноядерности.

WideAreaNetwork
сержант
Сообщения: 239
Зарегистрирован: 2017-01-10 14:37:13

Вопросы новичка

Непрочитанное сообщение WideAreaNetwork » 2020-02-21 19:48:22

Demis писал(а):
2020-02-21 18:57:01
Но это, на мой взгляд, пример команды показывает обратный процесс, т.е. от многоядерности -> одноядерности.
не умеет он раскидывать задачу на все ядра поровну, поочередно грузит ядра, из-за перескакиваний с ядра на ядро его и прибивают к 0 ядру, так как при этом он ест меньше ресурсов проца, проблема в другом, когда dummynet забивает одно ядро до 90+% то начинаются дикие лаги и тормоза у абонентов, потому и интересовала тема, как в этом плане развивается шейпер
получается выход с этого положения либо железо поновее брать, либо добавлять сервера доступа (естественно после всех возможных и невозможных оптимизаций сетевого стека IPFW DUMMYNET и т.д.)

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-02-21 20:03:20

Думаю, на текущий момент, исходя из реалий - проще
WideAreaNetwork писал(а):
2020-02-21 19:48:22
добавлять сервера доступа
Т.е. расти в ширь.
Но тут Вам виднее.

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Вопросы новичка

Непрочитанное сообщение Demis » 2020-02-21 20:26:26

Вот еще наткнулся, почитать, но это больше для себя.
https://people.freebsd.org/~olivier/tal ... -Paper.pdf
Просто, чтобы в ветке по теме осталось...

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Вопросы новичка

Непрочитанное сообщение snorlov » 2020-02-21 23:58:49

WideAreaNetwork писал(а):
2020-02-21 19:48:22
не умеет он раскидывать задачу на все ядра поровну, поочередно грузит ядра, из-за перескакиваний с ядра на ядро его и прибивают к 0 ядру, так как при этом он ест меньше ресурсов проца, проблема в другом, когда dummynet забивает одно ядро до 90+% то начинаются дикие лаги и тормоза у абонентов, потому и интересовала тема, как в этом плане развивается шейпер
получается выход с этого положения либо железо поновее брать, либо добавлять сервера доступа (естественно после всех возможных и невозможных оптимизаций сетевого стека IPFW DUMMYNET и т.д.)
Поищи в инете, народ в этом случае уходил на ng_nat