Ваш файл начинается с метки порядка байтов UTF-8. Это символ Юникода U+FEFF, который в UTF-8 кодируется как три байта. Эти три байта отображаются как 357 273 277
при печати в формате base 8.
Для команды sed
эти байты в начале строки означают, что 1
на самом деле не является первым символом в этой строке. Многие другие инструменты будут трактовать это так же.
Чтобы получить полезный результат, необходимо удалить BOM до выполнения других операций. Например, вы можете начать свой sed
скрипт с s/^\xef\xbb\xbf//
, чтобы удалить BOM. Ваша полная команда будет выглядеть так
sed -e 's/^\xef\xbb\xbf//;s/^[0-9]//'
perf незаметно не подсчитывал переключения контекста, потому что вы не являетесь пользователем root.
(Linux имеет 64k конвейерных буферов. В любом случае вы можете увидеть очень близкое к 2 переключениям контекста на переданные 64 КБ. Не совсем уверен, как это работает, но я подозреваю, что это только подсчет переключений контекста от от dd
, либо к другому dd
, либо к бездействующей задаче для этого процессора ).
$ sudo perf stat taskset 0x1 sh -c 'dd bs=1M </dev/zero|dd bs=1M >/dev/null'
^C14508+0 records in
14507+0 records out
15211692032 bytes (15 GB, 14 GiB) copied, 3.87098 s, 3.9 GB/s
14508+0 records in
14508+0 records out
15212740608 bytes (15 GB, 14 GiB) copied, 3.87044 s, 3.9 GB/s
taskset: Interrupt
Performance counter stats for 'taskset 0x1 sh -c dd bs=1M </dev/zero|dd bs=1M >/dev/null':
3872.597645 task-clock (msec) # 1.000 CPUs utilized
464,325 context-switches # 0.120 M/sec
0 cpu-migrations # 0.000 K/sec
928 page-faults # 0.240 K/sec
11,099,016,844 cycles # 2.866 GHz
13,765,220,898 instructions # 1.24 insn per cycle
3,053,464,009 branches # 788.480 M/sec
15,462,959 branch-misses # 0.51% of all branches
3.874121023 seconds time elapsed
$ echo $((15212740608 / 464325))
32763
$ sudo perf stat sh -c 'dd bs=1M </dev/zero|dd bs=1M >/dev/null'
^C7031+0 records in
7031+0 records out
7032+0 records in
7031+0 records out
7372537856 bytes (7.4 GB, 6.9 GiB) copied, 4.27436 s, 1.7 GB/s7372537856 bytes (7.4 GB, 6.9 GiB) copied, 4.27414 s, 1.7 GB/s
sh: Interrupt
Performance counter stats for 'sh -c dd bs=1M </dev/zero|dd bs=1M >/dev/null':
3736.056509 task-clock (msec) # 0.873 CPUs utilized
218,047 context-switches # 0.058 M/sec
206 cpu-migrations # 0.055 K/sec
877 page-faults # 0.235 K/sec
8,328,413,541 cycles # 2.229 GHz
7,617,859,285 instructions # 0.91 insn per cycle
1,671,904,009 branches # 447.505 M/sec
13,827,669 branch-misses # 0.83% of all branches
4.277591869 seconds time elapsed
$ echo $((7372537856 / 218047))
33811