Страница 1 из 6
Вопросы новичка
Добавлено: 2020-01-15 9:12:23
WideAreaNetwork
привет!
иногда не хватает подобной темы, в идеале еще бы прикрепить ее
перейду к вопросу) есть команды для вывода содержимого файла, cat head tail, подскажите пжл ключ к ним или другую утилиту для вывода, нужно чтобы содержимое выводилось с нумерацией строк, либо с конкретным номером строки, дабы не открывать файл целиком и не листать до нужной строки
Вопросы новичка
Добавлено: 2020-01-15 15:15:13
Demis
Варианты разные могут быть...
Код: Выделить всё
man head > head.txt
cat head.txt | awk '{print NR " " $0 }'
или так:
или так:
Код: Выделить всё
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 в помощь
Вопросы новичка
Добавлено: 2020-01-15 21:20:16
WideAreaNetwork
Demis писал(а): ↑2020-01-15 15:15:13
cat -n head.txt
супер, то что надо, большое спс)
иногда в логах показывает ошибку в файлах на такой то строке, и чтобы сразу посмотреть что за строка искал подобную команду
cat -n log.log | grep 35
для истории)
Вопросы новичка
Добавлено: 2020-01-15 22:43:51
novik
Один из альтернативных вариантов:
Вопросы новичка
Добавлено: 2020-01-16 12:11:50
Demis
Только обратите внимание, что греп выгребет "35" при любом вхождении в строку.
Если строка начинается именно на "35", то вернее будет так:
Символ ^ говорит "начало строки совпадает с 35".
Вопросы новичка
Добавлено: 2020-01-16 12:34:43
Demis
Если опираться на показанный выше пример, то получится:
Код: Выделить всё
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.
Т.е. есть пробелы в начале. Вариант
Даст "пусто" на выходе, т.к. строка НЕ начинается на 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]" вырежет пробелы и табуляции с начала строки.
Вопросы новичка
Добавлено: 2020-01-16 13:33:57
WideAreaNetwork
спс за помощь, а откуда взяться пробелам в начале строки если команда
пронумерует их вставляя номера в начале строки?
Вопросы новичка
Добавлено: 2020-01-16 15:07:46
Demis
Они там будут.
Приведенный пример, как раз с пробелами перед нумерацией на выходе.
Вопросы новичка
Добавлено: 2020-01-16 15:43:34
Demis
Почему
Demis писал(а): ↑2020-01-16 15:07:46
Они там будут.
Все просто.
Вообще если посмотреть исходник cat
и найти в нем кусок обработки по "-n" (это будет nflag)
Код: Выделить всё
if (nflag && (!bflag || ch != '\n')) {
(void)fprintf(stdout, "%6d\t", ++line);
if (ferror(stdout))
break;
}
видим, что разработчиком принудительно зашито шесть символов
Теперь идем, например, на
http://cppstudio.com/post/1270/ читаем описание
Код: Выделить всё
int fprintf( FILE * stream, const char * format, ... );
...
...
Форматируемые теги должны следовать следующему формату записи:
%[флаги][ширина поля][.точность][длинна]спецификатор
ищем ниже по тексту что такое "ширина":
Код: Выделить всё
ширина Описание
number Минимальное количество символов для печати. Если значение для печати короче, чем это число, пустые места заполняются пробелами. Значение не обрезается, даже если оно больше number.
Вот отсюда и получаются пробелы...
Вопросы новичка
Добавлено: 2020-01-16 17:08:24
WideAreaNetwork
так глубоко не вникал, даже бы не додумался)
Вопросы новичка
Добавлено: 2020-02-18 12:35:29
WideAreaNetwork
может кто знает поделитесь инфой, в релизах 11 версии и 12 не увидел никаких изменений по dummynet , вопрос собственно один, планируется ли сделать так чтобы он распараллеливался по ядрам? очень этого не хватает
Вопросы новичка
Добавлено: 2020-02-20 16:14:45
vadim64
у Вас мощность одного из ядер полностью съедается dummynet? можно пруф какой-то?
Вопросы новичка
Добавлено: 2020-02-21 9:08:17
WideAreaNetwork
при большем трафике больше загрузка, 2*Intel® Xeon® L5420
Вопросы новичка
Добавлено: 2020-02-21 11:14:01
snorlov
В далекие времена была подобная байда, похоже ее так и не починили, там проблема в высокой загрузки была из-за того, что dummynet прыгал с одного ядра на другое, затраты на переключения были большие, попробуйте привязать этот процесс к конкретному ядру... Хотя я может быть я и ошибаюсь...
Вопросы новичка
Добавлено: 2020-02-21 11:32:07
WideAreaNetwork
snorlov писал(а): ↑2020-02-21 11:14:01
попробуйте привязать этот процесс к конкретному ядру
есть такое, советуют к 0, но вопрос был в том, делают ли в этом направлении что-то разработчики, так как инфу не нашел
Вопросы новичка
Добавлено: 2020-02-21 12:26:43
Demis
В относительно свежем документе (в тексте оного есть упоминания 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.
Этот документ вообще интересно поизучать.
Вопросы новичка
Добавлено: 2020-02-21 13:06:50
Demis
А какого размера MTU у Вас используется на этой машине?
Вопросы новичка
Добавлено: 2020-02-21 15:31:37
WideAreaNetwork
Demis писал(а): ↑2020-02-21 13:06:50
А какого размера MTU у Вас используется на этой машине?
везде на всех интерфейсах MTU1500
Demis писал(а): ↑2020-02-21 12:26:43
LXD
а это что такое? документ не читал, так как о dummynet-е ни слова
Вопросы новичка
Добавлено: 2020-02-21 17:16:37
Demis
WideAreaNetwork писал(а): ↑2020-02-21 15:31:37
везде на всех интерфейсах MTU1500
Demis писал(а): ↑
2020-02-21 12:26:43
LXD
а это что такое?
Про igb(*) столько всего понаписано...
Мама не горюй.
Не уверен, что напишу решение в правильном направлении, но попробуйте просто изучить вопрос.
Это так-же как про LXD, хотя в том-же документе, на первой странице, во втором абзаце, написано :
Но вообще хочу высказаться про 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
Читайте, думайте, пробуйте и пишите...
Вопросы новичка
Добавлено: 2020-02-21 17:49:57
WideAreaNetwork
это все прочитано)
Demis писал(а): ↑2020-02-21 17:16:37
Но вообще хочу высказаться про MTU9000 и hw.igb.num_queues=3.
Мне нужно было сделать производительность сетевого стека.
В моем случае это помогло.
стоит БРАС потому мту менять не стоит
я спрашивал есть ли работы в сторону распараллеливания по ядрам шейпера dummynet? так как на сегодня он однопоточен, и тут ничего не остается как ставить еще один БРАС или более мощное железо, а вот если бы оно параллелилось , то даже старые серваки вполне пригодны были бы
варианты подсказали, к примеру прибиванием шейпера к 0 ядру, еще можно исходящую скорость от абонента не шейпить вообще
Вопросы новичка
Добавлено: 2020-02-21 18:57:01
Demis
Я наверное чего-то не догоняю.
Ведь народ наоброт пытается "вогнать/ужать" в одно русло.
Т.е. изначально пошла проблематика когда в железе появились треды и ядра.
Другими словами софт, включая даминет, уже сейчас написан с распараллеливанием, а как-же иначе ядро-то у Вас amd64.
Ваш пример из топа это наглядно рисует.
Но это потянуло цепочку других проблем "как с этим жить"?
Поэтому и начались эксперименты с обуздыванием этой ситуевины.
(Взять например прописывание в коде меток идентификаторов от прерываний того-же igb, для привязки к ядрам).
Команды вида
Код: Выделить всё
cpuset -l 0 -t $(procstat -t 0 | awk '/dummynet/ {print $2}')
именно это, принудительный "вгон" в одно ядро, и делают.
Но это, на мой взгляд, пример команды показывает обратный процесс, т.е. от многоядерности -> одноядерности.
Вопросы новичка
Добавлено: 2020-02-21 19:48:22
WideAreaNetwork
Demis писал(а): ↑2020-02-21 18:57:01
Но это, на мой взгляд, пример команды показывает обратный процесс, т.е. от многоядерности -> одноядерности.
не умеет он раскидывать задачу на все ядра поровну, поочередно грузит ядра, из-за перескакиваний с ядра на ядро его и прибивают к 0 ядру, так как при этом он ест меньше ресурсов проца, проблема в другом, когда dummynet забивает одно ядро до 90+% то начинаются дикие лаги и тормоза у абонентов, потому и интересовала тема, как в этом плане развивается шейпер
получается выход с этого положения либо железо поновее брать, либо добавлять сервера доступа (естественно после всех возможных и невозможных оптимизаций сетевого стека IPFW DUMMYNET и т.д.)
Вопросы новичка
Добавлено: 2020-02-21 20:03:20
Demis
Думаю, на текущий момент, исходя из реалий - проще
Т.е. расти в ширь.
Но тут Вам виднее.
Вопросы новичка
Добавлено: 2020-02-21 20:26:26
Demis
Вот еще наткнулся, почитать, но это больше для себя.
https://people.freebsd.org/~olivier/tal ... -Paper.pdf
Просто, чтобы в ветке по теме осталось...
Вопросы новичка
Добавлено: 2020-02-21 23:58:49
snorlov
WideAreaNetwork писал(а): ↑2020-02-21 19:48:22
не умеет он раскидывать задачу на все ядра поровну, поочередно грузит ядра, из-за перескакиваний с ядра на ядро его и прибивают к 0 ядру, так как при этом он ест меньше ресурсов проца, проблема в другом, когда dummynet забивает одно ядро до 90+% то начинаются дикие лаги и тормоза у абонентов, потому и интересовала тема, как в этом плане развивается шейпер
получается выход с этого положения либо железо поновее брать, либо добавлять сервера доступа (естественно после всех возможных и невозможных оптимизаций сетевого стека IPFW DUMMYNET и т.д.)
Поищи в инете, народ в этом случае уходил на ng_nat