wip_report

This commit is contained in:
Ivan Zinchenko 2026-02-14 03:43:49 +03:00
parent 3b0ea469ff
commit 90892b345b
43 changed files with 16184 additions and 170 deletions

View File

@ -0,0 +1,91 @@
./cpu_dedup --size 65535 --repeats 60 & mpstat 5
[1] 3453
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
21:26:16 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
21:26:21 all 50,05 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 49,85
21:26:26 all 50,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 49,95
21:26:31 all 49,95 0,00 0,10 0,10 0,00 0,00 0,00 0,00 0,00 49,85
21:26:36 all 50,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 50,00
21:26:41 all 50,00 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 49,90
21:26:46 all 49,95 0,00 0,00 0,00 0,00 0,00 0,10 0,00 0,00 49,95
21:26:51 all 50,00 0,00 0,00 0,00 0,00 0,00 0,10 0,00 0,00 49,90
21:26:56 all 50,00 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 49,90
21:27:01 all 50,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 50,00
21:27:06 all 50,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 49,95
21:27:11 all 50,00 0,00 0,30 0,00 0,00 0,00 0,00 0,00 0,00 49,70
21:27:16 all 50,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 49,95
21:27:21 all 50,00 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 49,90
21:27:26 all 49,95 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 49,95
21:27:31 all 50,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 49,95
21:27:36 all 50,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 50,00
21:27:41 all 50,00 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 49,90
21:27:46 all 50,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 49,95
21:27:51 all 50,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 49,95
21:27:56 all 49,95 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 49,95
repeat 1: unique=51501
repeat 2: unique=51669
repeat 3: unique=51477
repeat 4: unique=51589
repeat 5: unique=51489
repeat 6: unique=51538
repeat 7: unique=51621
repeat 8: unique=51598
repeat 9: unique=51511
repeat 10: unique=51613
repeat 11: unique=51553
repeat 12: unique=51526
repeat 13: unique=51454
repeat 14: unique=51545
repeat 15: unique=51438
repeat 16: unique=51639
repeat 17: unique=51534
repeat 18: unique=51665
repeat 19: unique=51574
repeat 20: unique=51589
repeat 21: unique=51595
repeat 22: unique=51704
repeat 23: unique=51635
repeat 24: unique=51576
repeat 25: unique=51675
repeat 26: unique=51482
repeat 27: unique=51650
repeat 28: unique=51669
repeat 29: unique=51642
repeat 30: unique=51498
repeat 31: unique=51488
repeat 32: unique=51488
repeat 33: unique=51668
repeat 34: unique=51438
repeat 35: unique=51485
repeat 36: unique=51680
repeat 37: unique=51438
repeat 38: unique=51486
repeat 39: unique=51592
repeat 40: unique=51531
repeat 41: unique=51538
repeat 42: unique=51513
repeat 43: unique=51481
repeat 44: unique=51591
repeat 45: unique=51728
repeat 46: unique=51615
repeat 47: unique=51649
repeat 48: unique=51762
repeat 49: unique=51643
repeat 50: unique=51571
repeat 51: unique=51416
repeat 52: unique=51635
repeat 53: unique=51545
repeat 54: unique=51528
repeat 55: unique=51656
repeat 56: unique=51558
repeat 57: unique=51474
repeat 58: unique=51475
repeat 59: unique=51537
repeat 60: unique=51526
21:28:01 all 49,25 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 50,75
21:28:06 all 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 99,90
21:28:11 all 0,00 0,00 0,00 0,10 0,00 0,00 0,00 0,00 0,00 99,90
^C
Среднее: all 45,63 0,00 0,05 0,01 0,00 0,00 0,01 0,00 0,00 54,31
[1]+ Завершён ./cpu_dedup --size 65535 --repeats 60

View File

@ -0,0 +1,86 @@
./cpu_dedup --size 65535 --repeats 60 & pidstat -p $! 5
[1] 3460
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
21:31:33 UID PID %usr %system %guest %wait %CPU CPU Command
21:31:38 1000 3460 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:31:43 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:31:48 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:31:53 1000 3460 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:31:58 1000 3460 100,00 0,20 0,00 0,00 100,20 1 cpu_dedup
21:32:03 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:32:08 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:32:13 1000 3460 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:32:18 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:32:23 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:32:28 1000 3460 100,00 0,20 0,00 0,00 100,20 1 cpu_dedup
21:32:33 1000 3460 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:32:38 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:32:43 1000 3460 99,80 0,20 0,00 0,00 100,00 1 cpu_dedup
21:32:48 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:32:53 1000 3460 100,00 0,20 0,00 0,00 100,20 1 cpu_dedup
21:32:58 1000 3460 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:33:03 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:33:08 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:33:13 1000 3460 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
repeat 1: unique=51574
repeat 2: unique=51524
repeat 3: unique=51627
repeat 4: unique=51537
repeat 5: unique=51618
repeat 6: unique=51519
repeat 7: unique=51607
repeat 8: unique=51558
repeat 9: unique=51584
repeat 10: unique=51519
repeat 11: unique=51673
repeat 12: unique=51630
repeat 13: unique=51531
repeat 14: unique=51471
repeat 15: unique=51556
repeat 16: unique=51462
repeat 17: unique=51592
repeat 18: unique=51561
repeat 19: unique=51703
repeat 20: unique=51532
repeat 21: unique=51585
repeat 22: unique=51579
repeat 23: unique=51669
repeat 24: unique=51726
repeat 25: unique=51516
repeat 26: unique=51724
repeat 27: unique=51530
repeat 28: unique=51617
repeat 29: unique=51625
repeat 30: unique=51659
repeat 31: unique=51485
repeat 32: unique=51504
repeat 33: unique=51543
repeat 34: unique=51681
repeat 35: unique=51395
repeat 36: unique=51486
repeat 37: unique=51718
repeat 38: unique=51423
repeat 39: unique=51447
repeat 40: unique=51611
repeat 41: unique=51447
repeat 42: unique=51556
repeat 43: unique=51521
repeat 44: unique=51530
repeat 45: unique=51500
repeat 46: unique=51673
repeat 47: unique=51603
repeat 48: unique=51647
repeat 49: unique=51723
repeat 50: unique=51647
repeat 51: unique=51552
repeat 52: unique=51449
repeat 53: unique=51594
repeat 54: unique=51610
repeat 55: unique=51508
repeat 56: unique=51686
repeat 57: unique=51621
repeat 58: unique=51443
repeat 59: unique=51417
repeat 60: unique=51496
[1]+ Завершён ./cpu_dedup --size 65535 --repeats 60

View File

@ -0,0 +1,91 @@
./cpu_dedup --size 65535 --repeats 60 & vmstat 5
[1] 3457
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
2 0 0 1748972 14864 153224 0 0 1 0 53 0 0 0 100 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1098 82 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1058 53 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1063 54 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1066 57 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1058 52 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1060 52 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1059 53 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1061 53 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1064 55 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1063 54 50 0 50 0 0 0
2 0 0 1748900 14864 153224 0 0 0 0 1062 54 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1060 50 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1059 55 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1058 53 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1062 56 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1064 58 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1063 52 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1060 51 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1058 52 50 0 50 0 0 0
1 0 0 1748900 14864 153224 0 0 0 0 1059 52 50 0 50 0 0 0
repeat 1: unique=51598
repeat 2: unique=51564
repeat 3: unique=51593
repeat 4: unique=51513
repeat 5: unique=51585
repeat 6: unique=51654
repeat 7: unique=51482
repeat 8: unique=51494
repeat 9: unique=51498
repeat 10: unique=51591
repeat 11: unique=51498
repeat 12: unique=51568
repeat 13: unique=51691
repeat 14: unique=51542
repeat 15: unique=51581
repeat 16: unique=51610
repeat 17: unique=51695
repeat 18: unique=51492
repeat 19: unique=51679
repeat 20: unique=51475
repeat 21: unique=51510
repeat 22: unique=51454
repeat 23: unique=51643
repeat 24: unique=51652
repeat 25: unique=51608
repeat 26: unique=51617
repeat 27: unique=51687
repeat 28: unique=51663
repeat 29: unique=51576
repeat 30: unique=51716
repeat 31: unique=51561
repeat 32: unique=51611
repeat 33: unique=51527
repeat 34: unique=51529
repeat 35: unique=51518
repeat 36: unique=51470
repeat 37: unique=51518
repeat 38: unique=51508
repeat 39: unique=51715
repeat 40: unique=51625
repeat 41: unique=51512
repeat 42: unique=51628
repeat 43: unique=51483
repeat 44: unique=51503
repeat 45: unique=51476
repeat 46: unique=51549
repeat 47: unique=51494
repeat 48: unique=51620
repeat 49: unique=51487
repeat 50: unique=51516
repeat 51: unique=51438
repeat 52: unique=51612
repeat 53: unique=51549
repeat 54: unique=51618
repeat 55: unique=51506
repeat 56: unique=51739
repeat 57: unique=51534
repeat 58: unique=51628
repeat 59: unique=51446
repeat 60: unique=51477
0 0 0 1748900 14864 153224 0 0 0 0 255 54 10 0 90 0 0 0
0 0 0 1748900 14864 153224 0 0 0 0 59 49 0 0 100 0 0 0
0 0 0 1748900 14864 153224 0 0 0 0 53 49 0 0 100 0 0 0
0 0 0 1748900 14864 153224 0 0 0 0 52 47 0 0 100 0 0 0
^C
[1]+ Завершён ./cpu_dedup --size 65535 --repeats 60

View File

@ -0,0 +1,31 @@
for i in {0..1}; do sh -c "./cpu_dedup --size 65535 --repeats 60 &"; done; mpstat 5
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
21:44:54 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
21:44:59 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:04 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:09 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:14 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:19 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:24 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:29 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:34 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:39 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:44 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:49 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:54 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:45:59 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:46:04 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:46:09 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:46:14 all 99,80 0,00 0,10 0,00 0,00 0,00 0,10 0,00 0,00 0,00
21:46:19 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:46:24 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:46:29 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:46:34 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:46:39 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
21:46:44 all 81,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 18,90
21:46:49 all 25,23 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 74,77
21:46:54 all 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
21:46:59 all 0,00 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 99,90
^C
Среднее: all 88,22 0,00 0,04 0,00 0,00 0,00 0,00 0,00 0,00 11,73

View File

@ -0,0 +1,47 @@
for i in {0..1}; do sh -c './cpu_dedup --size 65535 --repeats 60 & pidstat -p $! 5 &'; done
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
21:54:13 UID PID %usr %system %guest %wait %CPU CPU Command
21:54:18 1000 716 99,60 0,00 0,00 0,20 99,60 0 cpu_dedup
21:54:13 UID PID %usr %system %guest %wait %CPU CPU Command
21:54:18 1000 719 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:54:23 1000 716 99,80 0,20 0,00 0,00 100,00 0 cpu_dedup
21:54:23 1000 719 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:54:28 1000 716 100,00 0,00 0,00 0,00 100,00 0 cpu_dedup
21:54:28 1000 719 100,00 0,00 0,00 0,20 100,00 1 cpu_dedup
21:54:33 1000 716 99,80 0,00 0,00 0,00 99,80 0 cpu_dedup
21:54:33 1000 719 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:54:38 1000 716 100,00 0,00 0,00 0,00 100,00 0 cpu_dedup
21:54:38 1000 719 99,80 0,20 0,00 0,20 100,00 1 cpu_dedup
21:54:43 1000 716 100,00 0,00 0,00 0,00 100,00 0 cpu_dedup
21:54:43 1000 719 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:54:48 1000 716 99,80 0,20 0,00 0,00 100,00 0 cpu_dedup
21:54:48 1000 719 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:54:53 1000 716 100,00 0,00 0,00 0,00 100,00 0 cpu_dedup
21:54:53 1000 719 99,80 0,00 0,00 0,20 99,80 1 cpu_dedup
21:54:58 1000 716 100,00 0,00 0,00 0,00 100,00 0 cpu_dedup
21:54:58 1000 719 100,00 0,20 0,00 0,00 100,20 1 cpu_dedup
21:55:03 1000 716 99,60 0,20 0,00 0,00 99,80 0 cpu_dedup
21:55:03 1000 719 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:55:08 1000 716 100,00 0,00 0,00 0,00 100,00 0 cpu_dedup
21:55:08 1000 719 99,80 0,00 0,00 0,20 99,80 1 cpu_dedup
21:55:13 1000 716 100,00 0,00 0,00 0,20 100,00 0 cpu_dedup
21:55:13 1000 719 99,80 0,20 0,00 0,00 100,00 1 cpu_dedup
21:55:18 1000 716 99,80 0,00 0,00 0,00 99,80 0 cpu_dedup
21:55:18 1000 719 100,00 0,00 0,00 0,20 100,00 1 cpu_dedup
21:55:23 1000 716 100,00 0,20 0,00 0,00 100,20 0 cpu_dedup
21:55:23 1000 719 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
21:55:28 1000 716 99,80 0,00 0,00 0,00 99,80 0 cpu_dedup
21:55:28 1000 719 99,80 0,00 0,00 0,20 99,80 1 cpu_dedup
21:55:33 1000 716 100,00 0,00 0,00 0,00 100,00 0 cpu_dedup
21:55:33 1000 719 99,80 0,20 0,00 0,00 100,00 1 cpu_dedup
21:55:38 1000 716 100,00 0,00 0,00 0,00 100,00 0 cpu_dedup
21:55:38 1000 719 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:55:43 1000 716 99,80 0,20 0,00 0,00 100,00 0 cpu_dedup
21:55:43 1000 719 99,80 0,00 0,00 0,20 99,80 1 cpu_dedup
21:55:48 1000 716 99,80 0,20 0,00 0,00 100,00 0 cpu_dedup
21:55:48 1000 719 100,00 0,00 0,00 0,00 100,00 1 cpu_dedup
21:55:53 1000 716 100,00 0,00 0,00 0,00 100,00 0 cpu_dedup
21:55:53 1000 719 99,80 0,00 0,00 0,20 99,80 1 cpu_dedup
21:55:58 1000 716 100,00 0,00 0,00 0,00 100,00 0 cpu_dedup

View File

@ -0,0 +1,33 @@
for i in {0..1}; do sh -c "./cpu_dedup --size 65535 --repeats 60 &"; done; vmstat 5
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
4 0 0 1863476 9836 46596 0 0 110 1 556 0 23 0 77 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2048 101 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2007 64 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2004 58 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2005 60 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2005 59 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2004 59 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2006 58 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2007 62 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2004 59 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2004 60 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2003 59 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2005 62 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2006 60 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2007 63 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2005 63 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2006 59 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2005 59 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2005 60 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2004 58 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2007 64 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2004 58 100 0 0 0 0 0
2 0 0 1863476 9836 46648 0 0 0 0 2003 60 100 0 0 0 0 0
1 0 0 1863476 9836 46648 0 0 0 0 1891 68 94 0 6 0 0 0
1 0 0 1863476 9836 46648 0 0 0 0 1059 52 50 0 50 0 0 0
1 0 0 1863476 9836 46648 0 0 0 0 1059 52 50 0 50 0 0 0
0 0 0 1863476 9836 46648 0 0 0 0 808 58 37 0 63 0 0 0
0 0 0 1863476 9836 46648 0 0 0 0 50 48 0 0 100 0 0 0
0 0 0 1863476 9836 46648 0 0 0 0 44 50 0 0 100 0 0 0
0 0 0 1863476 9836 46648 0 0 0 0 57 49 0 0 100 0 0 0

View File

@ -0,0 +1,14 @@
./cpu_dedup_pthreads --size 65535 --repeats 60 --threads 2 > /dev/null & mpstat 10
[1] 762
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
22:38:44 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
22:38:54 all 99,90 0,00 0,05 0,00 0,00 0,05 0,00 0,00 0,00 0,00
22:39:04 all 99,95 0,00 0,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:39:14 all 99,95 0,00 0,00 0,00 0,00 0,00 0,05 0,00 0,00 0,00
22:39:24 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:39:34 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:39:44 all 50,38 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 49,62
22:39:54 all 0,00 0,00 0,05 0,00 0,00 0,00 0,00 0,00 0,00 99,95
22:40:04 all 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
22:40:14 all 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00

View File

@ -0,0 +1,10 @@
./cpu_dedup_pthreads --size 65535 --repeats 60 --threads 2 > /dev/null & pidstat -p $! 10
[1] 788
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
22:45:50 UID PID %usr %system %guest %wait %CPU CPU Command
22:46:00 1000 788 199,60 0,10 0,00 0,00 199,70 0 cpu_dedup_pthre
22:46:10 1000 788 200,00 0,00 0,00 0,00 200,00 0 cpu_dedup_pthre
22:46:20 1000 788 199,90 0,00 0,00 0,00 199,90 0 cpu_dedup_pthre
22:46:30 1000 788 199,90 0,00 0,00 0,00 199,90 0 cpu_dedup_pthre
22:46:40 1000 788 199,90 0,00 0,00 0,00 199,90 0 cpu_dedup_pthre

View File

@ -0,0 +1,14 @@
./cpu_dedup_pthreads --size 65535 --repeats 60 --threads 2 > /dev/null & vmstat 10
[1] 784
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
5 0 0 1858820 10024 50324 0 0 15 0 673 1 31 0 69 0 0 0
2 0 0 1858820 10024 50324 0 0 0 0 2016 68 100 0 0 0 0 0
2 0 0 1858820 10024 50324 0 0 0 0 2002 53 100 0 0 0 0 0
2 0 0 1858820 10024 50324 0 0 0 0 2004 55 100 0 0 0 0 0
2 0 0 1858820 10024 50324 0 0 0 0 2003 54 100 0 0 0 0 0
2 0 0 1858820 10024 50324 0 0 0 0 2003 53 100 0 0 0 0 0
1 0 0 1858820 10024 50324 0 0 0 0 1558 52 76 0 24 0 0 0
0 0 0 1858820 10024 50324 0 0 0 0 177 51 6 0 94 0 0 0
0 0 0 1858820 10024 50324 0 0 0 0 51 48 0 0 100 0 0 0
0 0 0 1858820 10024 50324 0 0 0 0 52 51 0 0 100 0 0 0

View File

@ -0,0 +1,32 @@
for i in {0..3}; do sh -c "./cpu_dedup --size 65535 --repeats 60 > /dev/null &"; done; mpstat 10
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
22:02:03 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
22:02:13 all 99,95 0,00 0,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:02:23 all 99,95 0,00 0,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:02:33 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:02:43 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:02:53 all 99,90 0,00 0,05 0,00 0,00 0,00 0,05 0,00 0,00 0,00
22:03:03 all 99,95 0,00 0,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:03:13 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:03:23 all 99,85 0,00 0,10 0,00 0,00 0,05 0,00 0,00 0,00 0,00
22:03:33 all 99,95 0,00 0,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:03:43 all 99,90 0,00 0,05 0,00 0,00 0,00 0,05 0,00 0,00 0,00
22:03:53 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:04:03 all 99,95 0,00 0,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:04:13 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:04:23 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:04:33 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:04:43 all 99,85 0,00 0,10 0,00 0,00 0,00 0,05 0,00 0,00 0,00
22:04:53 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:05:03 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:05:13 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:05:23 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:05:33 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:05:43 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:05:53 all 97,95 0,00 0,10 0,00 0,00 0,05 0,05 0,00 0,00 1,85
22:06:03 all 4,50 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 95,50
22:06:13 all 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
22:06:23 all 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
^C
Среднее: all 88,53 0,00 0,04 0,00 0,00 0,00 0,01 0,00 0,00 11,42

View File

@ -0,0 +1,96 @@
for i in {0..3}; do sh -c './cpu_dedup --size 65535 --repeats 60 > /dev/null & pidstat -p $! 10 &
'; done
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
22:12:57 UID PID %usr %system %guest %wait %CPU CPU Command
22:13:07 1000 745 49,65 0,00 0,00 50,15 49,65 1 cpu_dedup
22:12:57 UID PID %usr %system %guest %wait %CPU CPU Command
22:13:07 1000 748 50,50 0,00 0,00 49,40 50,50 0 cpu_dedup
22:12:57 UID PID %usr %system %guest %wait %CPU CPU Command
22:13:07 1000 751 49,70 0,00 0,00 50,20 49,70 1 cpu_dedup
22:12:57 UID PID %usr %system %guest %wait %CPU CPU Command
22:13:07 1000 754 49,60 0,10 0,00 50,30 49,70 0 cpu_dedup
22:13:17 1000 745 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:13:17 1000 748 49,90 0,00 0,00 50,00 49,90 0 cpu_dedup
22:13:17 1000 751 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:13:17 1000 754 49,90 0,00 0,00 50,00 49,90 0 cpu_dedup
22:13:27 1000 745 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:13:27 1000 748 50,00 0,00 0,00 50,10 50,00 0 cpu_dedup
22:13:27 1000 751 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:13:27 1000 754 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:13:37 1000 745 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:13:37 1000 748 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:13:37 1000 751 49,90 0,10 0,00 50,10 50,00 1 cpu_dedup
22:13:37 1000 754 49,90 0,00 0,00 50,00 49,90 0 cpu_dedup
22:13:47 1000 745 50,60 0,10 0,00 49,40 50,70 1 cpu_dedup
22:13:47 1000 748 49,70 0,00 0,00 50,20 49,70 1 cpu_dedup
22:13:47 1000 751 49,70 0,00 0,00 50,20 49,70 0 cpu_dedup
22:13:47 1000 754 49,80 0,10 0,00 50,30 49,90 0 cpu_dedup
22:13:57 1000 745 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:13:57 1000 748 50,00 0,10 0,00 50,00 50,10 1 cpu_dedup
22:13:57 1000 751 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:13:57 1000 754 49,90 0,00 0,00 50,00 49,90 0 cpu_dedup
22:14:07 1000 745 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:14:07 1000 748 49,90 0,00 0,00 50,10 49,90 1 cpu_dedup
22:14:07 1000 751 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:14:07 1000 754 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:14:17 1000 745 50,00 0,00 0,00 50,10 50,00 1 cpu_dedup
22:14:17 1000 748 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:14:17 1000 751 49,85 0,10 0,00 49,95 49,95 0 cpu_dedup
22:14:17 1000 754 49,90 0,00 0,00 50,00 49,90 0 cpu_dedup
22:14:27 1000 745 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:14:27 1000 748 50,00 0,10 0,00 50,00 50,10 1 cpu_dedup
22:14:27 1000 751 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:14:27 1000 754 50,00 0,10 0,00 50,00 50,10 0 cpu_dedup
22:14:37 1000 745 50,00 0,10 0,00 50,00 50,10 1 cpu_dedup
22:14:37 1000 748 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:14:37 1000 751 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:14:37 1000 754 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:14:47 1000 748 49,90 0,00 0,00 50,10 49,90 1 cpu_dedup
22:14:47 1000 745 49,90 0,00 0,00 50,10 49,90 1 cpu_dedup
22:14:47 1000 751 50,00 0,00 0,00 50,10 50,00 0 cpu_dedup
22:14:47 1000 754 49,95 0,00 0,00 49,95 49,95 0 cpu_dedup
22:14:57 1000 748 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:14:57 1000 745 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:14:57 1000 751 49,90 0,10 0,00 50,00 50,00 0 cpu_dedup
22:14:57 1000 754 49,90 0,00 0,00 50,10 49,90 0 cpu_dedup
22:15:07 1000 745 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:15:07 1000 748 50,00 0,10 0,00 50,00 50,10 1 cpu_dedup
22:15:07 1000 751 49,90 0,00 0,00 50,00 49,90 0 cpu_dedup
22:15:07 1000 754 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:15:17 1000 745 50,00 0,10 0,00 50,00 50,10 1 cpu_dedup
22:15:17 1000 748 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:15:17 1000 751 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:15:17 1000 754 50,00 0,10 0,00 50,00 50,10 0 cpu_dedup
22:15:27 1000 748 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:15:27 1000 745 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:15:27 1000 751 50,00 0,00 0,00 50,10 50,00 0 cpu_dedup
22:15:27 1000 754 49,90 0,00 0,00 50,00 49,90 0 cpu_dedup
22:15:37 1000 745 49,80 0,00 0,00 50,30 49,80 1 cpu_dedup
22:15:37 1000 748 49,80 0,00 0,00 50,30 49,80 1 cpu_dedup
22:15:37 1000 751 49,70 0,00 0,00 50,20 49,70 0 cpu_dedup
22:15:37 1000 754 50,50 0,00 0,00 49,40 50,50 0 cpu_dedup
22:15:47 1000 745 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:15:47 1000 748 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:15:47 1000 751 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:15:47 1000 754 50,00 0,10 0,00 50,10 50,10 0 cpu_dedup
22:15:57 1000 745 49,90 0,10 0,00 50,00 50,00 1 cpu_dedup
22:15:57 1000 748 50,00 0,10 0,00 50,00 50,10 1 cpu_dedup
22:15:57 1000 751 50,00 0,10 0,00 50,00 50,10 0 cpu_dedup
22:16:07 1000 751 49,90 0,00 0,00 50,00 49,90 0 cpu_dedup
22:16:07 1000 754 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup
22:16:17 1000 745 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:16:17 1000 748 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:16:17 1000 751 50,00 0,00 0,00 50,10 50,00 0 cpu_dedup
22:16:17 1000 754 49,90 0,10 0,00 50,00 50,00 0 cpu_dedup
22:16:27 1000 748 50,00 0,00 0,00 50,00 50,00 1 cpu_dedup
22:16:27 1000 745 49,90 0,00 0,00 50,00 49,90 1 cpu_dedup
22:16:27 1000 751 49,95 0,00 0,00 49,95 49,95 0 cpu_dedup
22:16:27 1000 754 49,90 0,00 0,00 50,00 49,90 0 cpu_dedup
22:16:37 1000 748 49,90 0,00 0,00 50,10 49,90 1 cpu_dedup
22:16:37 1000 745 50,00 0,00 0,00 50,10 50,00 1 cpu_dedup
22:16:37 1000 751 49,90 0,00 0,00 50,00 49,90 0 cpu_dedup
22:16:37 1000 754 50,00 0,00 0,00 50,00 50,00 0 cpu_dedup

View File

@ -0,0 +1,28 @@
for i in {0..3}; do sh -c "./cpu_dedup --size 65535 --repeats 60 > /dev/null &"; done; vmstat 10
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
5 0 0 1859684 10008 50296 0 0 32 0 810 1 37 0 63 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2023 1052 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2004 1045 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2004 1049 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2003 1047 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2003 1048 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2004 1048 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2002 1047 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2002 1046 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2004 1049 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2003 1047 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2002 1046 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2004 1049 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2003 1045 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2003 1048 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2004 1048 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2002 1046 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2002 1045 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2004 1048 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2003 1046 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2003 1049 100 0 0 0 0 0
4 0 0 1859684 10008 50296 0 0 0 0 2004 1048 100 0 0 0 0 0
0 0 0 1859684 10008 50296 0 0 0 0 1658 255 82 0 18 0 0 0
0 0 0 1859684 10008 50296 0 0 0 0 50 48 0 0 100 0 0 0
0 0 0 1859684 10008 50296 0 0 0 0 52 50 0 0 100 0 0 0

View File

@ -0,0 +1,13 @@
./cpu_dedup_pthreads --size 65535 --repeats 60 --threads 4 > /dev/null & mpstat 10
[1] 793
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
22:48:49 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
22:48:59 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:49:09 all 99,95 0,00 0,00 0,00 0,00 0,00 0,05 0,00 0,00 0,00
22:49:19 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:49:29 all 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:49:39 all 99,95 0,00 0,05 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:49:49 all 51,30 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 48,70
22:49:59 all 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
22:50:09 all 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00

View File

@ -0,0 +1,10 @@
./cpu_dedup_pthreads --size 65535 --repeats 60 --threads 4 > /dev/null & pidstat -p $! 10
[1] 806
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
22:51:56 UID PID %usr %system %guest %wait %CPU CPU Command
22:52:06 1000 806 199,70 0,10 0,00 0,00 199,80 0 cpu_dedup_pthre
22:52:16 1000 806 199,90 0,00 0,00 0,00 199,90 0 cpu_dedup_pthre
22:52:26 1000 806 200,00 0,00 0,00 0,00 200,00 0 cpu_dedup_pthre
22:52:36 1000 806 199,90 0,00 0,00 0,00 199,90 0 cpu_dedup_pthre
22:52:46 1000 806 199,80 0,00 0,00 0,00 199,80 0 cpu_dedup_pthre

View File

@ -0,0 +1,12 @@
./cpu_dedup_pthreads --size 65535 --repeats 60 --threads 4 > /dev/null & vmstat 10
[1] 800
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
4 0 0 1859108 10024 50324 0 0 13 0 674 1 31 0 69 0 0 0
4 0 0 1858604 10024 50324 0 0 0 0 2019 1055 100 0 0 0 0 0
4 0 0 1858604 10024 50324 0 0 0 0 2003 1035 100 0 0 0 0 0
4 0 0 1858604 10024 50324 0 0 0 0 2003 1031 100 0 0 0 0 0
4 0 0 1858604 10024 50324 0 0 0 0 2003 1034 100 0 0 0 0 0
4 0 0 1858604 10024 50324 0 0 0 0 2003 1036 100 0 0 0 0 0
0 0 0 1858604 10024 50324 0 0 0 0 646 311 30 0 70 0 0 0
0 0 0 1858604 10024 50324 0 0 0 0 52 47 0 0 100 0 0 0

View File

@ -0,0 +1,10 @@
for i in {0..1}; do sh -c "./cpu_dedup --size 65535 --repeats 60 &"; done; mpstat 5
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
22:57:50 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
22:57:55 all 99,70 0,00 0,30 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:58:00 all 99,70 0,00 0,20 0,00 0,00 0,00 0,10 0,00 0,00 0,00
22:58:05 all 99,80 0,00 0,20 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:58:10 all 99,90 0,00 0,10 0,00 0,00 0,00 0,00 0,00 0,00 0,00
22:58:15 all 57,40 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 42,60
22:58:20 all 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00

View File

@ -0,0 +1,16 @@
for i in {0..1}; do sh -c './cpu_dedup --size 65535 --repeats 60 > /dev/null & pidstat -p $! 5 &'
; done
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
Linux 6.12.68_1 (helium) 06.02.2026 _x86_64_ (2 CPU)
[s408657@helium vtld]$
23:01:49 UID PID %usr %system %guest %wait %CPU CPU Command
23:01:54 1000 879 99,40 0,20 0,00 0,00 99,60 0 cpu_dedup
23:01:49 UID PID %usr %system %guest %wait %CPU CPU Command
23:01:54 1000 882 99,60 0,20 0,00 0,00 99,80 1 cpu_dedup
23:01:59 1000 879 99,80 0,20 0,00 0,00 100,00 0 cpu_dedup
23:01:59 1000 882 99,80 0,00 0,00 0,00 99,80 1 cpu_dedup
23:02:04 1000 879 99,80 0,20 0,00 0,20 100,00 0 cpu_dedup
23:02:04 1000 882 99,80 0,20 0,00 0,20 100,00 1 cpu_dedup
23:02:09 1000 879 99,80 0,20 0,00 0,00 100,00 0 cpu_dedup
23:02:09 1000 882 99,80 0,20 0,00 0,00 100,00 1 cpu_dedu

View File

@ -0,0 +1,11 @@
for i in {0..1}; do sh -c "./cpu_dedup --size 65535 --repeats 60 > /dev/null &"; done; vmstat 5
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
2 0 0 1812820 11804 95328 0 0 21 0 655 1 30 0 70 0 0 0
2 0 0 1812820 11804 95328 0 0 0 0 2064 128 100 0 0 0 0 0
2 0 0 1812820 11804 95328 0 0 0 0 2011 76 100 0 0 0 0 0
2 0 0 1812820 11804 95328 0 0 0 0 2011 75 100 0 0 0 0 0
2 0 0 1812820 11804 95328 0 0 0 0 2015 81 100 0 0 0 0 0
0 0 0 1812820 11804 95328 0 0 0 0 1230 71 60 0 40 0 0 0
0 0 0 1812820 11804 95328 0 0 0 0 48 50 0 0 100 0 0 0
0 0 0 1812820 11804 95328 0 0 0 0 50 49 0 0 100 0 0 0

View File

@ -0,0 +1,154 @@
./ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some & iostat 5
[1] 1061
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
18,03 0,00 6,46 10,06 0,01 65,44
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 784,29 89491,06 163,19 0,00 61762257 112628 0
sr0 0,13 2,25 0,00 0,00 1552 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
20,48 0,00 7,33 23,49 0,00 48,69
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1033,20 117924,80 0,00 0,00 589624 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
5,32 0,00 2,11 42,87 0,00 49,70
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 299,40 29844,80 0,00 0,00 149224 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
7,94 0,00 2,81 39,70 0,00 49,55
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 434,20 42847,20 0,00 0,00 214236 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
31,17 0,00 11,34 9,11 0,00 48,38
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1810,20 178456,00 0,00 0,00 892280 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
34,78 0,00 13,21 4,23 0,00 47,78
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1750,00 206819,20 0,00 0,00 1034096 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
36,51 0,00 13,84 2,11 0,00 47,54
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1696,00 216369,60 0,00 0,00 1081848 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
6,71 0,00 2,71 41,08 0,00 49,50
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 299,20 38272,00 0,00 0,00 191360 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
5,31 0,00 1,80 43,24 0,00 49,65
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 220,40 28185,60 0,00 0,00 140928 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
11,92 0,00 4,01 34,77 0,10 49,20
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 518,40 66278,40 0,00 0,00 331392 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
5,42 0,00 1,71 43,23 0,00 49,65
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 222,20 28416,00 0,00 0,00 142080 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
9,03 0,00 3,51 38,11 0,00 49,35
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 396,60 50713,60 0,00 0,00 253568 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
19,96 0,00 7,72 23,67 0,00 48,65
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 934,00 119449,60 0,00 0,00 597248 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
5,12 0,00 2,21 42,97 0,00 49,70
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 224,60 28697,60 0,00 0,00 143488 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
11,14 0,00 4,02 35,44 0,00 49,40
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 499,20 63846,40 0,00 0,00 319232 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
36,42 0,00 14,08 1,91 0,00 47,59
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1654,80 211609,60 0,00 0,00 1058048 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
37,15 0,00 13,65 1,71 0,00 47,49
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1684,00 215347,20 0,00 0,00 1076736 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
37,05 0,00 13,45 1,91 0,10 47,49
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1670,40 213606,40 0,00 0,00 1068032 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
37,02 0,00 13,38 1,91 0,00 47,69
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1680,40 214860,80 0,00 0,00 1074304 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0

View File

@ -0,0 +1,58 @@
./ema_replace_str --block_size 1024 --file file.bin --string some --replace aaaa --repeats 10485760 & mpstat -P ALL 5
[1] 4169
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
12:03:37 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:03:42 all 34,58 0,00 15,93 2,22 0,00 0,00 0,00 0,00 0,00 47,28
12:03:42 0 0,00 0,00 5,44 0,00 0,00 0,00 0,00 0,00 0,00 94,56
12:03:42 1 69,15 0,00 26,41 4,44 0,00 0,00 0,00 0,00 0,00 0,00
12:03:42 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:03:47 all 33,43 0,00 15,91 4,73 0,00 0,10 0,00 0,00 0,00 45,82
12:03:47 0 0,00 0,00 5,22 3,21 0,00 0,20 0,00 0,00 0,00 91,37
12:03:47 1 67,07 0,00 26,67 6,26 0,00 0,00 0,00 0,00 0,00 0,00
12:03:47 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:03:52 all 14,36 0,00 6,22 32,43 0,00 0,00 0,00 0,00 0,00 46,99
12:03:52 0 0,00 0,00 2,41 3,42 0,00 0,00 0,00 0,00 0,00 94,16
12:03:52 1 28,66 0,00 10,02 61,32 0,00 0,00 0,00 0,00 0,00 0,00
12:03:52 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:03:57 all 4,40 0,00 2,20 43,84 0,00 0,00 0,00 0,00 0,00 49,55
12:03:57 0 0,00 0,00 0,60 0,20 0,00 0,00 0,00 0,00 0,00 99,20
12:03:57 1 8,80 0,00 3,80 87,40 0,00 0,00 0,00 0,00 0,00 0,00
12:03:57 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:04:02 all 16,30 0,00 7,65 27,16 0,00 0,00 0,10 0,00 0,00 48,79
12:04:02 0 0,00 0,00 2,80 0,00 0,00 0,00 0,20 0,00 0,00 97,00
12:04:02 1 32,79 0,00 12,55 54,66 0,00 0,00 0,00 0,00 0,00 0,00
12:04:02 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:04:07 all 34,21 0,00 15,49 2,72 0,00 0,00 0,10 0,00 0,00 47,48
12:04:07 0 0,00 0,00 5,03 0,00 0,00 0,00 0,00 0,00 0,00 94,97
12:04:07 1 68,41 0,00 25,96 5,43 0,00 0,00 0,20 0,00 0,00 0,00
12:04:07 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:04:12 all 34,31 0,00 15,54 2,72 0,00 0,00 0,00 0,00 0,00 47,43
12:04:12 0 68,83 0,00 25,71 5,47 0,00 0,00 0,00 0,00 0,00 0,00
12:04:12 1 0,00 0,00 5,43 0,00 0,00 0,00 0,00 0,00 0,00 94,57
12:04:12 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:04:17 all 34,61 0,00 15,64 2,32 0,00 0,00 0,00 0,00 0,00 47,43
12:04:17 0 69,43 0,00 25,91 4,66 0,00 0,00 0,00 0,00 0,00 0,00
12:04:17 1 0,00 0,00 5,43 0,00 0,00 0,00 0,00 0,00 0,00 94,57
12:04:17 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:04:22 all 27,39 0,00 14,15 29,53 0,00 0,10 0,00 0,00 0,00 28,82
12:04:22 0 47,34 0,00 20,49 31,97 0,00 0,20 0,00 0,00 0,00 0,00
12:04:22 1 7,69 0,00 7,89 27,13 0,00 0,00 0,00 0,00 0,00 57,29
12:04:22 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:04:27 all 34,91 0,00 15,49 2,21 0,00 0,00 0,00 0,00 0,00 47,38
12:04:27 0 69,82 0,00 25,75 4,43 0,00 0,00 0,00 0,00 0,00 0,00
12:04:27 1 0,00 0,00 5,23 0,00 0,00 0,00 0,00 0,00 0,00 94,77
12:04:27 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:04:32 all 34,74 0,00 15,56 2,31 0,00 0,10 0,00 0,00 0,00 47,29
12:04:32 0 69,76 0,00 25,81 4,44 0,00 0,00 0,00 0,00 0,00 0,00
12:04:32 1 0,00 0,00 5,40 0,20 0,00 0,20 0,00 0,00 0,00 94,20

View File

@ -0,0 +1,19 @@
./ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some & pidstat -p $! 5
[1] 1059
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
01:36:19 UID PID %usr %system %guest %wait %CPU CPU Command
01:36:24 1000 1059 62,80 18,80 0,00 0,00 81,60 0 ema_replace_str
01:36:29 1000 1059 11,20 3,40 0,00 0,00 14,60 0 ema_replace_str
01:36:34 1000 1059 10,60 3,60 0,00 0,00 14,20 0 ema_replace_str
01:36:39 1000 1059 45,80 14,20 0,00 0,00 60,00 0 ema_replace_str
01:36:44 1000 1059 70,40 22,20 0,00 0,00 92,60 0 ema_replace_str
01:36:49 1000 1059 73,00 21,60 0,00 0,00 94,60 0 ema_replace_str
01:36:54 1000 1059 72,20 23,00 0,00 0,00 95,20 0 ema_replace_str
01:36:59 1000 1059 74,00 21,80 0,00 0,00 95,80 0 ema_replace_str
01:37:04 1000 1059 73,20 22,40 0,00 0,00 95,60 0 ema_replace_str
01:37:09 1000 1059 40,40 12,00 0,00 0,00 52,40 0 ema_replace_str
01:37:14 1000 1059 10,20 3,40 0,00 0,00 13,60 0 ema_replace_str
01:37:19 1000 1059 24,40 7,00 0,00 0,00 31,40 0 ema_replace_str
01:37:24 1000 1059 73,40 22,60 0,00 0,00 96,00 0 ema_replace_str
01:37:29 1000 1059 73,80 22,00 0,00 0,00 95,80 0 ema_replace_str

View File

@ -0,0 +1,15 @@
./ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some & vmstat 5
[1] 1052
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
3 0 0 78024 3368 1865364 0 0 72983 270 1210 2 13 5 74 8 0 0
0 1 0 76340 3368 1862640 0 0 188723 0 3138 1214 32 13 48 7 0 0
1 0 0 88188 3240 1854320 0 0 176041 0 3127 1446 31 11 48 10 0 0
1 0 0 71052 3240 1867796 0 0 203576 0 3015 801 34 13 48 4 0 0
1 0 0 74364 3240 1861144 0 0 216677 0 2950 496 37 14 48 2 0 0
1 0 0 94020 3240 1846016 0 0 214989 0 2934 484 36 14 47 2 0 0
1 0 0 68820 3240 1873028 0 0 206208 0 2838 467 36 14 48 3 0 0
1 0 0 88476 3240 1852440 0 0 213888 0 2923 478 36 14 47 2 0 0
1 0 0 80412 3240 1858124 0 0 213402 0 2921 514 36 14 48 2 0 0
1 0 0 86160 3240 1854520 0 0 217242 0 2964 528 37 14 47 2 0 0
1 0 0 75072 3240 1864388 0 0 214246 0 2915 462 37 14 48 2 0 0

View File

@ -0,0 +1,146 @@
for i in {0..1}; do sh -c './ema_replace_str --block_size 1024 --file file.bin --repeats 10485760
--string aaaa --replace some &'; done; iostat 5
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
6,98 0,00 2,52 4,46 0,01 86,03
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 307,68 35428,30 55,25 0,00 72224833 112628 0
sr0 0,05 0,76 0,00 0,00 1552 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
67,41 0,00 18,23 14,05 0,00 0,31
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1771,00 190106,40 0,00 0,00 950532 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
63,78 0,00 16,68 18,92 0,00 0,61
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1843,20 180532,80 0,00 0,00 902664 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
34,74 0,00 9,44 54,12 0,00 1,71
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 926,60 101532,00 0,00 0,00 507660 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
2,41 0,00 0,50 97,09 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 51,40 6553,60 0,00 0,00 32768 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
2,40 0,00 0,60 96,89 0,10 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 49,40 5913,60 0,00 0,00 29568 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
4,51 0,00 1,20 94,29 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 94,00 12030,40 0,00 0,00 60152 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
4,41 0,00 1,10 92,89 0,00 1,60
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 90,00 11520,00 0,00 0,00 57600 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
4,42 0,00 1,20 94,38 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 96,80 12236,80 0,00 0,00 61184 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
28,49 0,00 8,12 60,18 0,00 3,21
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 651,80 83200,80 0,00 0,00 416004 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
75,71 0,00 20,36 3,53 0,00 0,40
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1760,80 224060,00 0,00 0,00 1120300 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
64,14 0,00 17,47 17,68 0,00 0,71
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1490,00 189994,40 0,00 0,00 949972 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
11,13 0,00 2,81 84,85 0,00 1,20
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 232,93 28339,32 0,00 0,00 141980 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
10,94 0,00 2,81 86,24 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 233,20 28339,20 0,00 0,00 141696 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
66,43 0,00 18,04 15,03 0,00 0,50
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1554,00 198156,00 0,00 0,00 990780 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
75,48 0,00 20,18 3,94 0,00 0,40
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1749,80 222956,00 0,00 0,00 1114780 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
73,72 0,00 21,05 4,53 0,10 0,60
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1727,00 219985,60 0,00 0,00 1099928 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
75,81 0,00 19,53 4,25 0,00 0,40
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1735,80 221270,40 0,00 0,00 1106352 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0

View File

@ -0,0 +1,21 @@
for i in {0..1}; do sh -c './ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some &'; done; mpstat 5
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
02:03:15 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
02:03:20 all 65,57 0,00 18,14 15,68 0,00 0,10 0,00 0,00 0,00 0,51
02:03:25 all 36,39 0,00 10,91 51,89 0,00 0,00 0,00 0,00 0,00 0,82
02:03:30 all 12,32 0,00 3,11 84,57 0,00 0,00 0,00 0,00 0,00 0,00
02:03:35 all 15,15 0,00 4,21 79,74 0,00 0,00 0,10 0,00 0,00 0,80
02:03:40 all 23,04 0,00 6,34 69,32 0,00 0,00 0,00 0,00 0,00 1,31
02:03:45 all 10,94 0,00 3,01 84,74 0,00 0,00 0,00 0,00 0,00 1,31
02:03:50 all 39,78 0,00 11,08 47,83 0,00 0,00 0,00 0,00 0,00 1,31
02:03:55 all 75,20 0,00 20,77 3,73 0,00 0,00 0,00 0,00 0,00 0,30
02:04:00 all 75,63 0,00 20,24 3,63 0,00 0,00 0,10 0,00 0,00 0,40
02:04:05 all 75,40 0,00 20,55 3,74 0,00 0,00 0,00 0,00 0,00 0,30
02:04:10 all 75,58 0,00 21,02 3,10 0,00 0,00 0,00 0,00 0,00 0,30
02:04:15 all 39,38 0,00 10,27 50,05 0,00 0,00 0,00 0,00 0,00 0,30
02:04:20 all 11,11 0,00 2,70 84,48 0,00 0,00 0,00 0,00 0,00 1,70
02:04:25 all 28,20 0,00 7,96 61,93 0,00 0,00 0,00 0,00 0,00 1,91
02:04:30 all 74,32 0,00 21,23 4,25 0,00 0,00 0,00 0,00 0,00 0,20
02:04:35 all 61,03 0,00 15,81 2,52 0,00 0,00 0,00 0,00 0,00 20,64
02:04:40 all 0,00 0,00 0,00 0,10 0,00 0,00 0,00 0,00 0,00 99,90

View File

@ -0,0 +1,35 @@
for i in {0..1}; do sh -c './ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some & pidstat -p $! 5 &'; done
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
02:07:10 UID PID %usr %system %guest %wait %CPU CPU Command
02:07:15 1000 1091 67,60 15,80 0,00 1,80 83,40 0 ema_replace_str
02:07:10 UID PID %usr %system %guest %wait %CPU CPU Command
02:07:15 1000 1094 66,00 16,00 0,00 3,20 82,00 1 ema_replace_str
02:07:20 1000 1091 62,80 14,20 0,00 2,00 77,00 0 ema_replace_str
02:07:20 1000 1094 62,20 14,40 0,00 2,40 76,60 1 ema_replace_str
02:07:25 1000 1091 69,66 17,96 0,00 2,40 87,62 0 ema_replace_str
02:07:25 1000 1094 70,60 16,80 0,00 3,20 87,40 1 ema_replace_str
02:07:30 1000 1091 38,60 8,00 0,00 1,80 46,60 0 ema_replace_str
02:07:30 1000 1094 38,00 9,40 0,00 0,80 47,40 1 ema_replace_str
02:07:35 1000 1091 11,60 2,40 0,00 0,60 14,00 0 ema_replace_str
02:07:35 1000 1094 11,60 2,20 0,00 0,00 13,80 1 ema_replace_str
02:07:40 1000 1091 29,40 6,60 0,00 1,00 36,00 0 ema_replace_str
02:07:40 1000 1094 28,60 7,40 0,00 1,00 36,00 1 ema_replace_str
02:07:45 1000 1091 75,20 17,40 0,00 3,60 92,60 1 ema_replace_str
02:07:45 1000 1094 75,00 19,00 0,00 2,00 94,00 0 ema_replace_str
02:07:50 1000 1091 75,40 17,60 0,00 3,20 93,00 0 ema_replace_str
02:07:50 1000 1094 75,00 18,80 0,00 2,40 93,80 1 ema_replace_str
02:07:55 1000 1091 14,20 2,40 0,00 0,00 16,60 0 ema_replace_str
02:07:55 1000 1094 13,20 2,80 0,00 0,60 16,00 1 ema_replace_str
02:08:00 1000 1091 10,40 2,60 0,00 0,20 13,00 1 ema_replace_str
02:08:00 1000 1094 10,60 2,40 0,00 0,20 13,00 0 ema_replace_str
02:08:05 1000 1091 54,40 14,00 0,00 1,40 68,40 1 ema_replace_str
02:08:05 1000 1094 55,60 12,20 0,00 2,60 67,80 0 ema_replace_str
02:08:10 1000 1091 76,20 17,60 0,00 2,60 93,80 0 ema_replace_str
02:08:10 1000 1094 75,80 17,40 0,00 3,20 93,20 1 ema_replace_str
02:08:15 1000 1091 44,00 10,80 0,00 0,60 54,80 0 ema_replace_str
02:08:15 1000 1094 44,00 9,60 0,00 2,20 53,60 1 ema_replace_str
02:08:20 1000 1091 10,80 2,40 0,00 0,20 13,20 0 ema_replace_str
02:08:20 1000 1094 10,60 2,40 0,00 0,20 13,00 1 ema_replace_str
02:08:25 1000 1091 24,20 5,00 0,00 1,20 29,20 1 ema_replace_str
02:08:25 1000 1094 24,35 5,79 0,00 0,20 30,14 0 ema_replace_str

View File

@ -0,0 +1,17 @@
for i in {0..1}; do sh -c './ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some &'; done; vmstat 5
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
3 2 0 90528 3240 1840840 0 0 40210 48 707 1 9 3 81 7 0 0
2 0 0 79920 3240 1854396 0 0 191953 0 4083 2347 66 18 0 15 0 0
2 0 0 103288 3240 1840124 0 0 174860 0 4096 2860 62 17 0 20 0 0
2 0 0 98004 3240 1845004 0 0 207482 0 3966 1672 71 19 1 9 0 0
2 0 0 88144 3240 1850272 0 0 218934 0 3866 1014 76 20 0 4 0 0
2 0 0 81428 3240 1859776 0 0 219922 0 3857 957 76 20 0 4 0 0
0 2 0 87040 3240 1847052 0 0 197997 0 3494 850 69 19 0 12 0 0
2 0 0 64492 3240 1873316 0 0 28336 0 622 295 11 3 1 85 0 0
1 1 0 65440 3240 1874480 0 0 29030 0 624 268 11 3 1 84 0 0
0 2 0 63960 3240 1862444 0 0 186557 0 3247 824 63 17 1 19 0 0
2 0 0 69044 3240 1858352 0 0 221838 0 3878 991 76 20 1 3 0 0
2 0 0 81164 3240 1855408 0 0 222616 0 3878 992 75 21 0 4 0 0
0 0 0 96940 3240 1845472 0 0 192920 0 3398 868 66 18 13 3 0 0
0 0 0 96940 3240 1845472 0 0 0 0 50 49 0 0 100 0 0 0

View File

@ -0,0 +1,130 @@
./ema_replace_str_pthreads --threads 2 --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some & iostat 10
[1] 1165
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
14,38 0,00 4,04 10,39 0,01 71,19
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 346,56 40787,27 29,81 0,00 169619989 123968 0
sr0 0,02 0,37 0,00 0,00 1552 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
16,05 0,00 5,65 75,06 0,00 3,23
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 667,90 85344,40 0,00 0,00 853444 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
16,07 0,00 6,30 74,01 0,00 3,63
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 693,60 88742,40 0,00 0,00 887424 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
8,66 0,00 3,42 85,10 0,00 2,82
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 374,20 47872,00 0,00 0,00 478720 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
9,10 0,00 3,62 84,36 0,00 2,92
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 395,40 50585,60 0,00 0,00 505856 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
9,30 0,00 3,42 85,48 0,00 1,81
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 398,30 50956,80 0,00 0,00 509568 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
10,78 0,00 3,42 80,31 0,05 5,44
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 372,80 47665,60 0,00 0,00 476656 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
8,85 0,00 3,57 85,66 0,00 1,91
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 384,00 48504,80 0,00 0,00 485048 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
8,13 0,00 3,21 85,05 0,00 3,61
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 347,40 44428,80 0,00 0,00 444288 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
8,65 0,00 3,42 85,21 0,00 2,72
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 371,10 47436,80 0,00 0,00 474368 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
8,69 0,00 3,47 85,08 0,00 2,76
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 373,70 47808,00 0,00 0,00 478080 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
10,27 0,00 3,78 81,67 0,00 4,28
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 434,07 55534,87 0,00 0,00 555904 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
12,49 0,00 5,09 79,51 0,00 2,92
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 540,60 69171,20 0,00 0,00 691712 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
11,03 0,00 4,58 81,32 0,00 3,07
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 485,50 62092,80 0,00 0,00 620928 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
19,31 0,00 7,38 69,31 0,05 3,94
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 828,50 105945,60 0,00 0,00 1059456 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
18,28 0,00 7,02 71,41 0,00 3,28
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 788,00 100761,60 0,00 0,00 1007616 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0

View File

@ -0,0 +1,13 @@
./ema_replace_str_pthreads --threads 2 --block_size 1024 --file file.bin --repeats 10485760 --str
ing aaaa --replace some & vmstat 10
[1] 1161
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
3 1 12104 90216 4224 1851376 0 2 39130 30 798 1 14 4 72 10 0 0
3 0 12104 76864 4232 1867600 0 0 181172 3 3108 2397 32 13 2 53 0 0
0 1 12104 65624 2436 1880320 0 0 182310 0 3080 2342 32 14 3 51 0 0
1 1 12104 84104 2244 1864668 0 0 181862 0 3054 2448 32 13 3 53 0 0
1 1 12104 90940 2244 1863516 0 0 181389 0 3061 2398 32 12 3 53 0 0
1 1 12104 72732 2244 1875676 0 0 113242 0 1927 1512 20 8 3 70 0 0
0 2 12104 96528 2244 1856988 0 0 95898 0 1652 1288 17 7 3 73 0 0
0 2 12104 100812 2244 1852124 0 0 85760 0 1481 1153 15 6 3 75 0 0

View File

@ -0,0 +1,112 @@
for i in {0..3}; do sh -c './ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some &'; done; iostat 10
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
12,04 0,00 3,58 8,53 0,01 75,84
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 355,80 41608,98 36,69 0,00 127724585 112628 0
sr0 0,03 0,51 0,00 0,00 1552 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
77,78 0,00 20,01 2,21 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 1179,90 117456,40 0,00 0,00 1174564 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
51,38 0,00 13,95 34,62 0,00 0,05
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 815,20 76386,40 46,40 0,00 763864 464 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
29,89 0,00 7,17 62,39 0,00 0,55
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 410,80 44546,80 0,00 0,00 445468 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
80,35 0,00 18,70 0,95 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 972,00 119792,00 0,00 0,00 1197920 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
79,80 0,00 18,95 1,25 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 993,31 120601,80 0,00 0,00 1207224 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
79,78 0,00 19,02 1,15 0,05 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 990,60 120661,60 0,00 0,00 1206616 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
37,79 0,00 8,97 53,23 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 461,50 56331,20 0,00 0,00 563312 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
46,32 0,00 11,17 42,51 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 558,80 68756,40 0,00 0,00 687564 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
79,68 0,00 19,22 1,10 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 989,20 120932,80 0,00 0,00 1209328 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
50,33 0,00 11,97 37,66 0,05 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 614,50 74999,20 0,00 0,00 749992 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
33,07 0,00 8,52 58,42 0,00 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 416,20 49650,00 0,00 0,00 496500 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
50,50 0,00 12,31 0,75 0,00 36,44
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 628,80 75882,00 0,00 0,00 758820 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
0,00 0,00 0,00 0,00 0,00 100,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 0,00 0,00 0,00 0,00 0 0 0
sr0 0,00 0,00 0,00 0,00 0 0 0

View File

@ -0,0 +1,21 @@
for i in {0..1}; do sh -c './ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some &'; done; mpstat 5
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
02:03:15 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
02:03:20 all 65,57 0,00 18,14 15,68 0,00 0,10 0,00 0,00 0,00 0,51
02:03:25 all 36,39 0,00 10,91 51,89 0,00 0,00 0,00 0,00 0,00 0,82
02:03:30 all 12,32 0,00 3,11 84,57 0,00 0,00 0,00 0,00 0,00 0,00
02:03:35 all 15,15 0,00 4,21 79,74 0,00 0,00 0,10 0,00 0,00 0,80
02:03:40 all 23,04 0,00 6,34 69,32 0,00 0,00 0,00 0,00 0,00 1,31
02:03:45 all 10,94 0,00 3,01 84,74 0,00 0,00 0,00 0,00 0,00 1,31
02:03:50 all 39,78 0,00 11,08 47,83 0,00 0,00 0,00 0,00 0,00 1,31
02:03:55 all 75,20 0,00 20,77 3,73 0,00 0,00 0,00 0,00 0,00 0,30
02:04:00 all 75,63 0,00 20,24 3,63 0,00 0,00 0,10 0,00 0,00 0,40
02:04:05 all 75,40 0,00 20,55 3,74 0,00 0,00 0,00 0,00 0,00 0,30
02:04:10 all 75,58 0,00 21,02 3,10 0,00 0,00 0,00 0,00 0,00 0,30
02:04:15 all 39,38 0,00 10,27 50,05 0,00 0,00 0,00 0,00 0,00 0,30
02:04:20 all 11,11 0,00 2,70 84,48 0,00 0,00 0,00 0,00 0,00 1,70
02:04:25 all 28,20 0,00 7,96 61,93 0,00 0,00 0,00 0,00 0,00 1,91
02:04:30 all 74,32 0,00 21,23 4,25 0,00 0,00 0,00 0,00 0,00 0,20
02:04:35 all 61,03 0,00 15,81 2,52 0,00 0,00 0,00 0,00 0,00 20,64
02:04:40 all 0,00 0,00 0,00 0,10 0,00 0,00 0,00 0,00 0,00 99,90

View File

@ -0,0 +1,81 @@
for i in {0..3}; do sh -c './ema_replace_str --block_size 1024 --file file.bin --repeats 10485760
--string aaaa --replace some & pidstat -p $! 10 &'; done
[s408657@helium vtld]$ Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
Linux 6.12.68_1 (helium) 07.02.2026 _x86_64_ (2 CPU)
TIME UID PID %usr %sys %guest %wait %CPU CPU COMMAND
02:20:19 1000 1120 18.10 4.80 0.00 23.70 22.90 1 ema_replace_str
02:20:19 1000 1126 18.60 3.90 0.00 25.20 22.50 1 ema_replace_str
02:20:19 1000 1123 18.50 4.30 0.00 26.80 22.80 0 ema_replace_str
02:20:19 1000 1117 18.60 4.10 0.00 25.80 22.70 0 ema_replace_str
02:20:29 1000 1126 9.60 2.40 0.00 14.40 12.00 0 ema_replace_str
02:20:29 1000 1117 9.40 2.50 0.00 14.00 11.90 0 ema_replace_str
02:20:29 1000 1123 9.70 2.30 0.00 13.10 12.00 0 ema_replace_str
02:20:29 1000 1120 9.80 2.30 0.00 12.10 12.10 1 ema_replace_str
02:20:39 1000 1126 14.40 3.40 0.00 18.40 17.80 1 ema_replace_str
02:20:39 1000 1123 14.20 3.60 0.00 18.80 17.80 1 ema_replace_str
02:20:39 1000 1120 14.30 3.40 0.00 18.80 17.70 1 ema_replace_str
02:20:39 1000 1117 14.00 3.90 0.00 19.90 17.90 0 ema_replace_str
02:20:49 1000 1126 19.00 4.50 0.00 25.90 23.50 1 ema_replace_str
02:20:49 1000 1123 19.10 4.50 0.00 23.60 23.60 0 ema_replace_str
02:20:49 1000 1120 19.20 4.50 0.00 23.20 23.70 1 ema_replace_str
02:20:49 1000 1117 18.78 4.80 0.00 23.98 23.58 0 ema_replace_str
02:20:59 1000 1126 22.00 5.00 0.00 28.40 27.00 0 ema_replace_str
02:20:59 1000 1123 22.00 5.00 0.00 28.80 27.00 1 ema_replace_str
02:20:59 1000 1120 22.00 5.30 0.00 26.70 27.30 0 ema_replace_str
02:20:59 1000 1117 21.60 5.30 0.00 27.50 26.90 1 ema_replace_str
02:21:09 1000 1126 39.90 8.10 0.00 49.40 48.00 0 ema_replace_str
02:21:09 1000 1120 39.80 8.10 0.00 49.50 47.90 1 ema_replace_str
02:21:09 1000 1123 39.60 9.60 0.00 47.90 49.20 1 ema_replace_str
02:21:09 1000 1117 39.50 8.90 0.00 49.40 48.40 0 ema_replace_str
02:21:19 1000 1126 4.70 1.00 0.00 15.30 5.70 0 ema_replace_str
02:21:19 1000 1120 4.50 1.20 0.00 5.40 5.70 0 ema_replace_str
02:21:19 1000 1123 4.70 1.00 0.00 5.50 5.70 1 ema_replace_str
02:21:19 1000 1117 4.60 1.10 0.00 10.00 5.70 1 ema_replace_str
02:21:29 1000 1126 4.10 0.80 0.00 9.70 4.90 0 ema_replace_str
02:21:29 1000 1120 3.90 1.00 0.00 6.20 4.90 1 ema_replace_str
02:21:29 1000 1123 4.00 0.90 0.00 6.20 4.90 1 ema_replace_str
02:21:29 1000 1117 4.00 1.10 0.00 5.90 5.10 0 ema_replace_str
02:21:39 1000 1126 4.10 1.00 0.00 6.00 5.10 0 ema_replace_str
02:21:39 1000 1120 4.20 1.00 0.00 6.50 5.00 0 ema_replace_str
02:21:39 1000 1123 4.10 0.90 0.00 6.20 5.20 1 ema_replace_str
02:21:39 1000 1117 4.40 0.80 0.00 11.20 5.20 0 ema_replace_str
02:21:49 1000 1126 30.90 7.00 0.00 38.20 37.90 0 ema_replace_str
02:21:49 1000 1123 30.57 7.39 0.00 37.36 37.96 1 ema_replace_str
02:21:49 1000 1120 30.87 6.79 0.00 37.36 37.66 0 ema_replace_str
02:21:49 1000 1117 31.10 6.70 0.00 37.40 37.80 1 ema_replace_str
02:21:59 1000 1126 39.40 9.60 0.00 48.00 49.00 0 ema_replace_str
02:21:59 1000 1123 40.10 8.20 0.00 49.10 48.30 1 ema_replace_str
02:21:59 1000 1120 40.20 8.50 0.00 48.80 48.70 0 ema_replace_str
02:21:59 1000 1117 40.50 8.20 0.00 48.70 48.70 1 ema_replace_str
02:22:09 1000 1126 12.30 2.70 0.00 15.50 15.00 1 ema_replace_str
02:22:09 1000 1123 12.70 2.60 0.00 17.50 15.30 0 ema_replace_str
02:22:09 1000 1120 12.30 3.10 0.00 15.40 15.40 0 ema_replace_str
02:22:09 1000 1117 12.20 3.00 0.00 16.20 15.20 1 ema_replace_str
02:22:19 1000 1126 29.07 6.89 0.00 36.96 35.96 1 ema_replace_str
02:22:19 1000 1123 29.30 6.60 0.00 37.00 35.90 0 ema_replace_str
02:22:19 1000 1120 29.20 7.40 0.00 37.00 36.60 0 ema_replace_str
02:22:19 1000 1117 29.40 6.40 0.00 36.00 35.80 1 ema_replace_str
02:22:29 1000 1126 40.30 8.30 0.00 49.30 48.60 0 ema_replace_str
02:22:29 1000 1123 41.00 8.30 0.00 48.50 49.30 0 ema_replace_str
02:22:29 1000 1120 40.30 8.60 0.00 49.00 48.90 1 ema_replace_str
02:22:29 1000 1117 39.80 8.90 0.00 48.90 48.70 1 ema_replace_str
02:22:39 1000 1126 39.70 9.20 0.00 48.00 48.90 1 ema_replace_str
02:22:39 1000 1123 40.00 8.60 0.00 48.50 48.30 1 ema_replace_str
02:22:39 1000 1120 40.10 8.30 0.00 48.40 48.60 0 ema_replace_str
02:22:39 1000 1117 40.40 8.10 0.00 48.30 48.50 0 ema_replace_str

View File

@ -0,0 +1,17 @@
for i in {0..3}; do sh -c './ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some &'; done; vmstat 10
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
5 0 12360 70172 2808 1883608 0 3 42037 34 836 1 14 4 71 10 0 0
4 0 12360 86748 2808 1867848 0 0 119738 0 3000 1304 79 19 0 2 0 0
4 0 12360 93028 2352 1858188 0 0 119978 0 2991 1287 79 19 0 1 0 0
0 4 12360 75240 2352 1873808 0 0 118809 0 2936 1234 78 19 0 3 0 0
0 4 12360 74508 2352 1878228 0 0 11834 0 372 227 9 2 0 89 0 0
0 4 12360 73616 2352 1879684 0 0 11640 0 351 211 8 2 0 90 0 0
4 0 12360 77264 2352 1869976 0 0 16243 0 473 281 11 3 0 86 0 0
0 4 12360 67544 2352 1885236 0 0 119864 0 2993 1314 80 19 0 1 0 0
4 0 12360 89248 2904 1862908 22 3 119507 6 2982 1249 80 19 0 1 0 0
4 0 12360 89368 2260 1863832 0 0 120600 1 2982 1230 80 19 0 1 0 0
4 0 12360 72168 2260 1879680 0 0 119872 0 2986 1271 80 19 0 1 0 0
4 0 12360 91040 2260 1862704 0 0 119442 2 2971 1215 80 19 0 1 0 0
0 0 12360 80316 2260 1873464 0 0 50090 0 1275 556 34 8 58 0 0 0
0 0 12360 80092 2260 1873464 0 0 0 0 49 36 0 0 100 0 0 0

View File

@ -0,0 +1,4 @@
#let showCode = (path) => {
let file = read(path)
text(size: 8pt, raw(file, lang: "bash"))
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,404 @@
#import "helpers.typ": *
#let header = (
subject: "Операционные системы",
lab_number: [1]
)
#set text(16pt)
#set align(center)
#box(height: 1cm)
*Федеральное государственное автономное образовательное
учреждение высшего образования «Национальный исследовательский
университет ИТМО»*
\
Факультет Программной Инженерии и Компьютерной Техники
#box(height: 2.5cm)
*#header.subject*\
*Отчёт по лабораторной работе №#header.lab_number*
#box(height: 4cm)
#set text(16pt)
#set align(left)
#table(
columns: 2,
stroke: none,
[*Выполнил:*], [Зинченко Иван Николаевич],
[*Преподаватель:*], [Зубахин Дмитрий Сергеевич],
[*Группа:*], [P3312],
[*ИСУ:*], [408657]
)
#set align(center)
#box(height: 4cm)
Санкт-Петербург\
#datetime.today().year() год
#pagebreak()
#set text(12pt)
#set align(left)
#set par(justify: true)
= Текст задания
== Введение
Базовый пользовательский интерфейс операционной системы - это терминал, с его помощью можно взаимодействовать с ОС, давать ей команды и запускать программы и наблюдать результат их выполнения. А имея возможность запускать программы можно расширить возможности данной ОС. В данной лабораторной работе вам предлагается реализовать простую командную оболочку наподобие Bash вместе с несколькими вспомогательными утилитами для проверки работоспособности разработанного приложения и исследования поведения операционной системы.
== Часть 1. Запуск программ
Необходимо реализовать собственную оболочку командной строки - shell. Shell должен предоставлять пользователю возможность запускать программы на компьютере с переданными аргументами командной строки и отображать время их выполнения (рассчитать как разность времени завершения и времени запуска).
== Часть 2. Логические операторы
В разработанное приложение командной оболочки необходимо добавить поддержку логических операторов (аналогичных операторам из Bash) согласно выданному варианту:
&& - логическое И (AND),
|| - логическое ИЛИ (OR),
; - последовательное выполнение,
& - выполнение в фоне.
== Часть 3. Анализ системы и мониторинг
Разработайте параметризируемую программу-нагрузчик, которая будет однопоточно нагружать подсистему ввода-вывода (IO). Она должна принимать на вход следующие параметры:
- rw: read/write - режим нагрузки: чтение или запись;
- block_size: <number> - размер блока в байтах, с которым производится чтение/запись;
- block_count: <number> - количество блоков;
- file: \<path string> - имя файла, с которым происходит работа;
- range: <number>-<number> - границы в пределах файла, в которые должны осуществляться запись/чтение, значение по умолчанию, 0-0, означает, что доступен весь файл;
- direct: on/off - открывать файл с опцией O_DIRECT (в обход кэшей ОС) или нет;
- type: sequence/random - режим выбора следующего блока для записи/чтения последовательно или случайно;
Разработайте комплекс программ-нагрузчиков согласно выданному варианту. Каждый нагрузчик должен принимать параметр, который определяет количество повторений для алгоритма, указанного в задании, а также другие вспомогательные параметры. Варианты программ рассчитаны так, чтобы по-разному нагружать вычислительную подсистему (CPU) и подсистему ввода-вывода (IO) - это необходимо учитывать при их реализации. Разработанные программы необходимо скомпилировать без дополнительных опций оптимизации компилятора.
Проведите исследование поведения ОС во время исполнения разработанных программ-нагрузчиков по следующему плану:
+ Перед запуском нагрузчика, попробуйте оценить время работы вашей программы или ее результаты (если по варианту вам досталось измерение чего либо) и обоснуйте свои предположения.
+ Запустите программу-нагрузчик и зафиксируйте метрики ее работы с помощью инструментов для мониторинга и профилирования (см. лекции). Сравните полученные результаты с ожидаемыми. Объясните наблюдаемое поведение. Продолжительность каждого запуска должна занимать достаточное для прекращения переходных процессов время, по крайней мере, минуту.
+ Определите количество одновременно запущенных процессов с программой-нагрузчиком, которое эффективно нагружает все ядра процессора в вашей системе. Как распределяются показатели времени USER%, SYS%, WAIT%, а также полное время выполнения нагрузчика, какое количество переключений контекста (вынужденных и невынужденных) происходит при этом? Подумайте над тем, как вы определяете эффективность.
+ Увеличьте количество нагрузчиков вдвое, втрое, вчетверо. Как изменились исследуемые показатели? Почему?
+ Объедините программы-нагрузчики в одну, реализованную при помощи потоков выполнения, чтобы один нагрузчик эффективно нагружал все ядра вашей системы. Как изменились показатели времени для того же объема вычислений? Запустите одну, две, три таких программы. Как изменились исследуемые показатели? Почему?
+ Скомпилируйте программу-нагрузчик с опцией агрессивной оптимизации. Как изменились исследуемые показатели? На сколько сократилось реальное время исполнения программы нагрузчика? Почему?
В процессе защиты вашей работы преподаватель будет просить вас запустить программу-нагрузчик с различными комбинациями параметров и просить объяснить результат.
Вариант: `proc-fork shell-and cpu-dedup ema-replace-str`.
= Ход работы
== vtsh
Пример работы vtsh
```
vtsh> pwd
/home/s408657/os-course/lab/vtsh/build/bin
time_ms=3.637
vtsh> tree
.
├── CMakeFiles
│ ├── CMakeDirectoryInformation.cmake
│ ├── progress.marks
│ └── vtsh.dir
│ ├── DependInfo.cmake
│ ├── build.make
│ ├── cmake_clean.cmake
│ ├── compiler_depend.internal
│ ├── compiler_depend.make
│ ├── compiler_depend.ts
│ ├── depend.make
│ ├── flags.make
│ ├── link.d
│ ├── link.txt
│ ├── main.c.o
│ ├── main.c.o.d
│ └── progress.make
├── Makefile
├── cmake_install.cmake
└── vtsh
3 directories, 18 files
time_ms=16.394
vtsh> cd ..
vtsh> pwd
/home/s408657/os-course/lab/vtsh/build
time_ms=1.801
vtsh> echo TESST
TESST
time_ms=1.185
vtsh> exit
```
== Нагрузчики
Проверять нагрузчики будем на виртуальной машине с 2 ядрами с частотой 3.3 ГГц, 2 ГБ оперативной памяти с частотой 3200 МГц. В качестве хранилища данных используется SSD с интерфейсом SATA III.
=== CPU нагрузчик
```c
for (long r = repeat_start; r < repeat_end; ++r) {
int32_t* arr = malloc((size_t)size * sizeof(int32_t));
if (!arr) {
return -1;
}
int32_t* dedup = malloc((size_t)size * sizeof(int32_t));
if (!dedup) {
free(arr);
return -1;
}
for (long i = 0; i < size; ++i) {
arr[i] = (int32_t)(rand_r(seed) % max_value);
}
long unique = 0;
for (long i = 0; i < size; ++i) {
int32_t value = arr[i];
int found = 0;
for (long j = 0; j < unique; ++j) {
if (dedup[j] == value) {
found = 1;
break;
}
}
if (!found) {
dedup[unique++] = value;
}
}
free(arr);
free(dedup);
results[r] = unique;
}
```
Нагрузчик реализует дедупликацию массива данных. Сначала он выделяет память под элементы в массиве и дедуплицированный массив. Затем заполняет его случайными значениями. Проходит по массиву и добавляет в дедуплицированный массивы элементы, которые в нём ещё не находятся. В конце идёт освобождение памяти от массивов. Этот алгоритм повторяется то количество раз, которое задано при помощи аргумента программы.
Алгоритмически имеем сложность $O(r dot (n + n^2)) = O(r dot n^2)$, где $r$ --- количество повторений алгоритма, $n$ --- количество элементов в массиве.
Большую часть времени занимают операции сравнения, операции чтения и записи у массивов. При данной частоте процессора можно примерно оценить время выполнения алгоритма. Пусть на операцию сравнения уходит 1 нс. При массиве в $2^16 = #(calc.pow(2, 16))$ чисел и при 10 повторах программа будет работать не менее $2^16 dot 10 dot 1 = #(calc.pow(2, 16) * 10) "нс"$. Точное время оценить сложно, так как неизвестно время выполнения операций на процессоре и нужно добавить к общему времени затраты на операции чтения, записи и системные вызовы.
Предположим как будет распределяться время выполнения программы. Практически 99% времени будет уходить на USER% время на операциях чтения, записи и сравнения. Оставшейся процент пойдёт на SYS% на аллоцирование и освобождение памяти. WAIT% должен быть на нуле, так как мы не обращаемся к устройства ввода-вывода.
Запустим программу нагрузчик с параметрами size = 65535 и repeats = 10.
```bash
time ./cpu_dedup --size 65535 --repeats 10
repeat 1: unique=51544
repeat 2: unique=51795
repeat 3: unique=51570
repeat 4: unique=51720
repeat 5: unique=51457
repeat 6: unique=51633
repeat 7: unique=51734
repeat 8: unique=51652
repeat 9: unique=51522
repeat 10: unique=51653
real 0m19,581s
user 0m19,560s
sys 0m0,018s
```
Моё время работы оказалось далеко от полученного. Трудно оценить время выполнения операций. Из времени работы видно, что большая часть занимает USER% часть и малая SYS%.
Теперь рассмотрим как нагрузчик влияет на систему. Для мониторинга воспользуемся. Параметр repeats увеличим до 60-ти.
#showCode("cpu-1-mpstat.txt")
Видно, что у процессора полностью загружено одно ядро. ОС находиться в USER% времени большую часть времени. После завершения программы система перешла в IDLE состояние.
#showCode("cpu-1-vmstat.txt")
По vmstat значения с USER% и SYS% совпадают. Также видно, что на момент работы программы увеличивается количество прерываний и переключений контекста.
#showCode("cpu-1-pidstat.txt")
В системе работает именно наша программа нагрузки CPU и она загружает ядро на 100%.
Во время работы нагрузчика не было других программ, занимающих процессорное время (столбик `r` в `vmstat`), соответственно нагрузчику досталось целое ядро.
Теперь попробуем увеличить количество нагрузчиков. Запустим два. Вывод нагрузчика я буду опускать.
#showCode("cpu-2-mpstat.txt")
#showCode("cpu-2-vmstat.txt")
#showCode("cpu-2-pidstat.txt")
По выводам утилит видно, что два нагрузчика распределились на два ядра, загрузив процессор на 100%. Они оба были работающими процессами в момент замера. Количество прерываний увеличилось два раза. Параметр USER% стремится к 100%. Система пока в состоянии обслуживать два нагрузчика. Общее время выполнения программ существенно не изменилось. $approx 120$ секунд. Программу можно считать эффективной, так как она нагружает 100% USER%, а WAIT% равен 0.
Попробуем запустить 4 нагрузчика одновременно. Частоту замера я увеличу до 1 замера 10 секунд.
#showCode("cpu-4-mpstat.txt")
#showCode("cpu-4-vmstat.txt")
#showCode("cpu-4-pidstat.txt")
Видно, что у процессов параметр WAIT% стремиться к 50%, так как теперь двум программам нужно делить одно ядро. Интересно то, что количество переключений контекста увеличилось в 20 раз. Это связано с тем, что теперь ОС принудительно останавливает исполнение процессов, чтобы отдать процессорное время другим. Время вычислений увеличилось до 270 секунд.
Проверим реализацию с posix thread. Она берёт общее количество повторов и ровно распределяет работу между потоками. Запустим два потока.
#showCode("cpu-2p-mpstat.txt")
#showCode("cpu-2p-vmstat.txt")
#showCode("cpu-2p-pidstat.txt")
Программа использовала 100%. Можно увидеть, что для процесса параметр USER% стремиться к 200%, то есть один процесс нагружает сразу два ядра процессора.
Запустим программу с 4 потоками.
#showCode("cpu-4p-mpstat.txt")
#showCode("cpu-4p-vmstat.txt")
#showCode("cpu-4p-pidstat.txt")
Работа ОС при 4-х потоках не отличается от работы с 2-мя потоками.
Теперь попробуем нагрузчик с агрессивной оптимизацией при компиляции.
```
time ./cpu_dedup --size 65535 --repeats 10
repeat 1: unique=51622
repeat 2: unique=51534
repeat 3: unique=51494
repeat 4: unique=51530
repeat 5: unique=51541
repeat 6: unique=51576
repeat 7: unique=51544
repeat 8: unique=51615
repeat 9: unique=51663
repeat 10: unique=51546
real 0m3,825s
user 0m3,809s
sys 0m0,015s
```
Работа программы ускорилась в 5 раз в сравнении с версией без оптимизаций.
#showCode("cpuO3-2-mpstat.txt")
#showCode("cpuO3-2-vmstat.txt")
#showCode("cpuO3-2-pidstat.txt")
Программа сильно ускорилась во времени выполнения. Занимаемые ресурсы остались на прежнем уровне. В итоге компилятор смог повысить эффективность программы при помощи агрессивной оптимизации.
=== ema-replace-str
Нагрузчик выполняет поиск и замену подстроки в файле блочно. На каждом повторении выбирается блок (последовательно или случайно), затем выполняется чтение блока, поиск/замена в буфере, и при наличии замен выполняется запись. Таким образом, нагрузчик создаёт смешанную нагрузку, операции в USER% (поиск/замена в памяти) и SYS% (системные вызовы чтения/записи, работа файловой системы и блочного слоя).
Оценим объём ввода-вывода. На каждой итерации выполняется как минимум чтение block_size байт. Запись выполняется только если найдена хотя бы одна замена.
При обычной работе часть чтений/записей может обслуживаться page cache, поэтому WAIT% может быть ниже, а USER% относительно выше. SYS% будет не нулевым, так как нужно обслуживать системные вызовы чтения и записи.
При O_DIRECT кэш ОС обходится, поэтому ожидается рост WAIT% (iowait) и SYS%, а общее время будет сильнее зависеть от скорости диска.
При последовательном доступе будет выше пропускная способность, ниже задержки. При случайном рост задержек и WAIT%, сильнее выраженный предел устройства.
Для тестов я использовал случайно сгенерированный файл на 10ГБ, состоящий из символов `a-z`.
Запустим нагрузчик и измерим реальное время выполнения:
```bash
time ./ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some
replacements=13355
real 1m10,588s
user 0m35,943s
sys 0m10,508
```
IO time = 10.588 + 60 - 35.943 - 10.508 = #calc.round(10.588 + 60 - 35.943 - 10.508, digits: 2) с.
#showCode("ema-1-mpstat.txt")
Согласно mpstat, в процессе работы наблюдается заметный рост IOWAIT%, что указывает на периоды, когда вычислительные ресурсы простаивают из-за ожидания IO операций. Одновременно значения USER% и SYS% меняются, при фазах обработки буфера и большом числе системных вызовов увеличиваются USER% и SYS%, а при фазах ожидания операций чтения увеличивается IOWAIT%. Доля IDLE% 50% объясняется тем, что нагрузчик является однопоточным, а система имеет 2 CPU --- одно ядро часто остаётся недогруженным, даже когда процесс активно выполняется или ждёт диск.
#showCode("ema-1-vmstat.txt")
По данным vmstat наблюдается большой поток ввода при практически нулевом выводе, что дополнительно подтверждает, что узким местом данного прогона является подсистема чтения данных, а не запись и не вычисления. В целом результаты мониторинга согласуются с ожидаемым поведением, нагрузчик периодически переходит в ожидание диска, что отражается в росте IOWAIT% и в разнице между real и user+sys.
#showCode("ema-1-pidstat.txt")
По pidstat видно, что у процесса не постоянный уровень USER% и SYS%. Это можно объяснить IOWAIT%, который виден на других показаниях.
#showCode("ema-1-iostat.txt")
По данным iostat нагрузка имеет характер чтения с диска: для устройства sda наблюдается интенсивное чтение, при этом запись практически отсутствует.
Проверим работу с двум нагрузчиками.
#showCode("ema-2-mpstat.txt")
#showCode("ema-2-vmstat.txt")
#showCode("ema-2-pidstat.txt")
#showCode("ema-2-iostat.txt")
При запуске двух экземпляров ema_replace_str на системе с 2 CPU наблюдается перераспределение времён CPU: доля IDLE% практически исчезает, но значительную часть времени занимает IOWAIT%, который в отдельных интервалах достигает 80-85%. Это означает, что оба ядра большую часть времени простаивают именно из-за ожидания операций чтения с диска. Данные vmstat подтверждают I/O-характер нагрузки: большие значения bi при практически нулевом bo, а также появляются процессы в состоянии блокировки (b до 2), что соответствует одновременному ожиданию диска обоими нагрузчиками. Таким образом, эффективность масштабирования ограничивается подсистемой ввода-вывода, что проявляется ростом ожидания I/O (iowait).
#showCode("ema-4-mpstat.txt")
#showCode("ema-4-vmstat.txt")
#showCode("ema-4-pidstat.txt")
#showCode("ema-4-iostat.txt")
По vmstat видно, одновременно периодически фиксируется b=4, что означает, что все четыре процесса могут одновременно находиться в ожидании I/O.
pidstat показывает, что каждый из четырёх процессов в среднем получает лишь часть CPU: в разные интервалы один процесс потребляет порядка ~12-27% CPU, а в активной работе поднимается до 50% CPU на процесс, что может отображать фазы обработали данные, ждём данные.
По iostat чтение с sda становится нестабильным, в активные окна достигает ~117-121 MB/s или падает до ~44-56 MB/s, при резком росте %iowait до 53-62% и 94-97%. Это означает, что при N=4 подсистема хранения работает на максимум, а добавление процессов уже не даёт стабильного роста пропускной способности и увеличивает время ожидания
Рассмотрим многопоточную реализацию.
#showCode("ema-2p-vmstat.txt")
#showCode("ema-2p-iostat.txt")
Потоки увеличили число одновременных запросов, но IO всё равно остаётся узким местом. CPU часто простаивает именно в ожидании диска (в iowait), а не занят вычислениями. Это же видно по vmstat, по заблокированным процессам.
Увеличивать количество потоков не имеет смысла, так как предел в IO достигнут.
Проведём ещё несколько экспериментов.
// - Сравнение с O_DIRECT
// - Проверка записи
// - Агрессивная оптимизация
Без O_DIRECT программа работает за
```bash
time ./ema_replace_str --block_size 1024 --file file.bin --repeats 10485760 --string aaaa --replace some
replacements=0
real 1m36,238s
user 0m35,956s
sys 0m11,511
```
С O_DIRECT программа завершилась за 17 минут. Это можно объяснить низким размером блока. При увеличении размера блока с 1КБ до 16МБ программа отработала за 22 минут. Из-за O_DIRECT работа с файлом может стать медленнее, так как мы не используем кеш ОС.
Также была исследована работа при случайном выборе блока. Программа стара работать намного медленнее, так как скорость чтения с диска опустилась до 10 МБ/с.
При агрессивной оптимизации увеличилось значение IOWAIT%, то есть USR% часть стала выполняться быстрее.
== Вывод
CPU-нагрузчик ожидаемо уходит в пользовательские вычисления, системная доля минимальна, а ожидание I/O практически отсутствует. При масштабировании до двух параллельных запусков CPU загружается заметно сильнее, а в потоковой версии один процесс способен загрузить оба ядра сразу. Увеличение потоков выше числа ядер уже почти не даёт эффекта. Агрессивная оптимизация ускоряет именно вычислительную часть.
Для ema нагрузчика по метрикам time, iostat, mpstat, vmstat, pidstat видно, что нагрузка в основном I/O-ограниченная: существенная доля времени уходит в ожидание диска (iowait, наличие блокировок b, высокие bi), а CPU работает между операциями ввода-вывода. При увеличении параллелизма показатели чтения/tps упираются в ограничения диска.

View File

@ -0,0 +1,4 @@
#let showCode = (path) => {
let file = read(path)
text(size: 8pt, raw(file, lang: "bash"))
}

View File

@ -0,0 +1,41 @@
iostat 5 5
Linux 6.12.68_1 (helium) 14.02.2026 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
6,44 0,00 1,47 17,76 0,01 74,32
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 356,85 7156,52 17607,47 0,00 65366333 160823304 0
sr0 0,01 0,17 0,00 0,00 1552 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
44,42 0,00 4,42 2,51 0,00 48,64
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 80,60 5632,00 46696,80 0,00 28160 233484 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
46,18 0,00 4,42 1,20 0,00 48,19
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 73,60 921,60 48335,20 0,00 4608 241676 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
46,78 0,00 4,02 0,60 0,00 48,59
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 71,00 102,40 47618,40 0,00 512 238092 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
46,78 0,00 4,53 3,42 0,00 45,27
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 98,40 0,00 64207,20 0,00 0 321036 0
sr0 0,00 0,00 0,00 0,00 0 0 0

View File

@ -0,0 +1,38 @@
avg-cpu: %user %nice %system %iowait %steal %idle
6,63 0,00 1,48 17,67 0,01 74,21
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 355,26 7120,02 17775,29 0,00 65399613 163271540 0
sr0 0,01 0,17 0,00 0,00 1552 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
38,83 0,00 4,85 31,14 0,00 25,18
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 158,80 0,00 109419,20 0,00 0 547096 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
46,81 0,00 5,17 7,60 0,00 40,43
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 169,20 0,00 116840,80 0,00 0 584204 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
45,30 0,00 5,36 23,46 0,00 25,88
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 139,80 0,00 96155,20 0,00 0 480776 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
43,43 0,00 4,85 51,62 0,10 0,00
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 136,80 0,00 95080,80 0,00 0 475404 0
sr0 0,00 0,00 0,00 0,00 0 0 0

View File

@ -0,0 +1,38 @@
avg-cpu: %user %nice %system %iowait %steal %idle
6,49 0,00 1,47 17,83 0,01 74,21
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 343,86 7172,85 17808,52 0,00 64649069 160508748 0
sr0 0,01 0,17 0,00 0,00 1552 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
3,09 0,00 3,09 42,64 0,00 51,18
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 4203,80 11703,20 5112,80 0,00 58516 25564 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
3,29 0,00 2,98 42,45 0,00 51,28
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 4489,40 13003,20 4955,20 0,00 65016 24776 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
3,50 0,00 2,78 42,49 0,00 51,23
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 4328,20 12546,40 4767,20 0,00 62732 23836 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
3,31 0,00 2,69 42,46 0,00 51,55
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 4521,40 13461,60 4624,80 0,00 67308 23124 0
sr0 0,00 0,00 0,00 0,00 0 0 0

View File

@ -0,0 +1,38 @@
avg-cpu: %user %nice %system %iowait %steal %idle
6,78 0,00 1,49 17,84 0,01 73,88
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 354,94 7072,91 18144,51 0,00 65443541 167885876 0
sr0 0,01 0,17 0,00 0,00 1552 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
1,74 0,00 2,05 45,65 0,00 50,56
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 2322,40 6640,80 2649,60 0,00 33204 13248 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
1,74 0,00 1,84 45,56 0,00 50,87
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 2535,60 7238,40 2904,80 0,00 36192 14524 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
3,18 0,00 3,28 42,26 0,10 51,18
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 4597,20 13676,80 4712,80 0,00 68384 23564 0
sr0 0,00 0,00 0,00 0,00 0 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
3,29 0,00 3,39 42,20 0,00 51,13
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd
sda 4694,01 14277,84 4499,00 0,00 71532 22540 0
sr0 0,00 0,00 0,00 0,00 0 0 0

View File

@ -0,0 +1,142 @@
#import "helpers.typ": *
#let header = (
subject: "Операционные системы",
lab_number: [2]
)
#set text(16pt)
#set align(center)
#box(height: 1cm)
*Федеральное государственное автономное образовательное
учреждение высшего образования «Национальный исследовательский
университет ИТМО»*
\
Факультет Программной Инженерии и Компьютерной Техники
#box(height: 2.5cm)
*#header.subject*\
*Отчёт по лабораторной работе №#header.lab_number*
#box(height: 4cm)
#set text(16pt)
#set align(left)
#table(
columns: 2,
stroke: none,
[*Выполнил:*], [Зинченко Иван Николаевич],
[*Преподаватель:*], [Зубахин Дмитрий Сергеевич],
[*Группа:*], [P3312],
[*ИСУ:*], [408657]
)
#set align(center)
#box(height: 4cm)
Санкт-Петербург\
#datetime.today().year() год
#pagebreak()
#set text(12pt)
#set align(left)
#set par(justify: true)
= Текст задания
Для оптимизации работы с блочными устройствами в ОС существует кэш страниц с данными, которыми мы производим операции чтения и записи на диск. Такой кэш позволяет избежать высоких задержек при повторном доступе к данным, так как операция будет выполнена с данными в RAM, а не на диске (вспомним пирамиду памяти
на 35 слайде и всё-всё).
В данной лабораторной работе необходимо реализовать блочный кэш в пространстве пользователя в виде динамической библиотеки. Политику вытеснения страниц и другие элементы задания необходимо получить у преподавателя.
При выполнении работы необходимо реализовать простой API для работы с файлами, предоставляющий пользователю следующие возможности (по аналогии с системным API):
+ Открытие файла по заданному пути файла, доступного для чтения. Процедура возвращает некоторый хэндл на файл. Пример: `int vtpc_open(const char *path)`.
+ Закрытие файла по хэндлу. Пример: `int vtpc_close(int fd)`.
+ Чтение данных из файла. Пример: `ssize_t vtpc_read(int fd, void buf[.count], size_t count)`.
+ Запись данных в файл. Пример: `ssize_t vtpc_write(int fd, const void buf[.count], size_t count)`.
+ Перестановка позиции указателя на данные файла. Достаточно поддержать только абсолютные координаты. Пример: `off_t vtpc_lseek(int fd, off_t offset, int whence)`.
+ Синхронизация данных из кэша с диском. Пример: `int vtpc_fsync(int fd)`.
Операции с диском разработанного блочного кеша должны производиться в обход страничного кеша операционной системы.
В рамках проверки работоспособности разработанного блочного кэша необходимо адаптировать указанную преподавателем программу-загрузчик из ЛР 1, добавив использование кэша. Запустите программу и убедитесь, что она корректно работает. Сравните производительность до и после.
Точкой входа в ваш модуль являются файлы `vtpc.h` и `vtpc.c`. Именно этот API вызывается тестовым фреймворком, сравнивающим поведения вашего `vtpc` и `libc`.
Вариант: 2Q.
= Краткий обзор кода
Реализация разбита на следующие файлы:
- `vtpc.c`: публичный API.
- `vtpc_state.c`: глобальное состояние кэша и инициализация.
- `vtpc_list.c`: операции со списками очередей 2Q.
- `vtpc_cache.c`: загрузка страниц, вытеснение, flush.
- `vtpc_internal.h`: внутренние структуры/константы.
Ключевая логика:
- `A1in` хранит недавно загруженные страницы.
- `Am` хранит часто используемые страницы.
- `A1out` хранит ghost-записи вытесненных страниц.
- При нехватке места вызывается вытеснение по 2Q.
- Dirty-страницы сбрасываются при `fsync`, `close` и вытеснении.
= Данные о работе программы-нагрузчика до и после внедрения page cache
Работы выполняется на виртуальной машине с 2 ядрами с частотой 3.3 ГГц, 2 ГБ оперативной памяти с частотой 3200 МГц. В качестве хранилища данных используется SSD с интерфейсом SATA III.
Для тестов использовался сгенерированный файл на 1ГБ, состоящий из символов `a-z`.
Для сравнения использовался один и тот же вход и параметры запуска.
Параметры запуска:
```bash
./ema_replace_str --block_size 524288 --file ~/file.bin --repeats 28672 --string amahasla --replace amahasla
```
Замеры времени:
#table(
columns: (auto, ..(1fr,)*3, auto),
inset: 4pt,
[Режим], [real, c], [user, c], [sys, c], [],
[libc, seq], [0m50,010s], [0m40,671s], [0m3,343s], [],
[libc, rand], [0m45,921s], [0m40,791s], [0m3,152s], [],
[vtpc, seq], [28m53.76s], [1m31.476s], [1m33.1], [cache hit=1254400\ cache miss=3670016],
[vtpc, rand], [17m18.268s], [1m29.292s], [1m19.688s], [cache_hit=1214976\ cache_miss=3655680],
)
Результаты с vtpc были экстраполированы. Запуски проводились с параметром repeats = 1024.
Значения iostat при работе с libc (iostat 5 5):
Последовательное чтение:
#showCode("libc-seq.txt")
Случайное чтение:
#showCode("libc-iostat.txt")
Значения iostat при работе с vtpc (iostat 5 5):
Последовательное чтение:
#showCode("vtpc-seq.txt")
Случайное чтение:
#showCode("vtpc-iostat.txt")
= Заключение
В работе реализован пользовательский блочный кэш с политикой 2Q и API, совместимым по поведению с системным интерфейсом файловых операций. Нагрузчик `ema_replace_str` адаптирован для работы через `vtpc`.
По результатам тестов подтверждена корректность реализации. По результатам замеров получено: [краткий итог по производительности до/после].
Итог: поставленные задачи выполнены, кэш работает корректно, интеграция с нагрузчиком выполнена.

View File

@ -1,5 +0,0 @@
{
"files.associations": {
"errno.h": "c"
}
}

View File

@ -1,165 +0,0 @@
# Базовый трек. Лабораторная работа 1
Вариант: `cpu-dedup ema-replace-str`
## Часть 3. Анализ системы и мониторинг
Разработайте параметризируемую программу-нагрузчик, которая будет однопоточно нагружать подсистему ввода-вывода (IO). Она должна принимать на вход следующие параметры:
- `rw: read/write` - режим нагрузки: чтение или запись;
- `block_size: <number>` - размер блока в байтах, с которым производится чтение/запись;
- `block_count: <number>` - количество блоков;
- `file: <path string>` - имя файла, с которым происходит работа;
- `range: <number>-<number>` - границы в пределах файла, в которые должны
осуществляться запись/чтение, значение по умолчанию, 0-0, означает, что доступен
весь файл;
- `direct: on/off` - открывать файл с опцией O_DIRECT (в обход кэшей ОС) или нет;
- `type: sequence/random` - режим выбора следующего блока для записи/чтения
последовательно или случайно;
Разработайте комплекс программ-нагрузчиков согласно выданному варианту.
Каждый нагрузчик должен принимать параметр, который определяет
количество повторений для алгоритма, указанного в задании, а также другие
вспомогательные параметры. Варианты программ рассчитаны так, чтобы по-разному
нагружать вычислительную подсистему (CPU) и подсистему ввода-вывода (IO) - это
необходимо учитывать при их реализации. Разработанные программы необходимо
скомпилировать без дополнительных опций оптимизации компилятора.
Проведите исследование поведения ОС во время исполнения разработанных
программ-нагрузчиков по следующему плану:
1. Перед запуском нагрузчика, попробуйте оценить время работы вашей программы
или ее результаты (если по варианту вам досталось измерение чего либо) и
обоснуйте свои предположения.
2. Запустите программу-нагрузчик и зафиксируйте метрики ее работы с помощью
инструментов для мониторинга и профилирования (см. лекции). Сравните полученные
результаты с ожидаемыми. Объяснените наблюдаемое поведение. Продолжительность
каждого запуска должна занимать достаточное для прекращения переходных
процессов время, по крайней мере, минуту.
3. Определите количество одновременно запущенных процессов с программой-нагрузчиком,
которое эффективно нагружает все ядра процессора в вашей системе. Как
распределяются показатели времени USER%, SYS%, WAIT%, а также полное время
выполнения нагрузчика, какое количество переключений контекста (вынужденных и
невынужденных) происходит при этом? Подумайте над тем, как вы определяете
эффективность.
4. Увеличьте количество нагрузчиков вдвое, втрое, вчетверо. Как изменились
исследуемые показатели? Почему?
5. Объедините программы-нагрузчики в одну, реализованную при помощи потоков
выполнения, чтобы один нагрузчик эффективно нагружал все ядра вашей системы. Как
изменились показатели времени для того же объема вычислений? Запустите одну,
две, три таких программы. Как изменились исследуемые показатели? Почему?
6. Скомпилируйте программу-нугрузчик с опцией агрессивной оптимизации. Как
изменились исследуемые показатели? На сколько сократилось реальное время
исполнения программы нагрузчика? Почему?
В процессе защиты вашей работы преподаватель будет просить вас запустить
программу-нагрузчик с различными комбинациями параметров и просить объяснить
результат.
## Требования к реализации
1. Программа (комплекс программ) должна быть реализован на языке C.
2. Дочерние процессы должны быть созданы через указанные в варианте системные
вызовы операционной системы, с обеспечением корректного запуска и завершения
процессов. Запрещено использовать высокоуровневые абстракции над системными
вызовами. Необходимо использовать, процедуры libc.
## Требования к отчету и защите
Отчет должен содержать:
1. Титульный лист с указанием номера и названия ЛР, вашего ФИО, ФИО
преподавателя практики, номера вашей группы, варианта ЛР.
2. Текст задания в соответствии с вариантом.
3. Листинг исходного кода всех программ, написанных в рамках данной ЛР.
4. Предположения о свойствах программ-нагрузчиков
5. Результаты измерений и метрик программ-нагрузчиков, полученных инструментами
мониторинга. Должно быть описано, какие утилиты запускались, с какими
параметрами и их вывод.
6. Сравнительный анализ ожидаемых и фактических значений исследованных показателей.
7. Заключение.
Студент должен быть готов:
1. Продемонстрировать работоспособность Shell и предоставить исходный код.
2. Воспроизвести ход работы по исследованию поведения ОС и продемонстрировать схожие
результаты работы программ-нагрузчиков.
3. Ответить на вопросы по реализации программ и контрольные вопросы.
## Описание вариантов
Нагрузчик вычислительной подсистемы (группа **cpu**):
- `cpu-factorize`: Разложение числа на простые множители. Задаваемое число
должно являться произведением нескольких больших простых чисел.
- `cpu-sort`: Любая сортировка массива чисел за N*log(N) и любая за N**2.
Алгоритм должен быть реализован самим студентом, а не взят из стандартной
библиотеки.
- `cpu-short-path`: Поиск кратчайшего пути в графе. Граф генерируется в момент
запуска или записан в исходный код.
- `cpu-linreg`: Построение модели линейной регрессии для последовательности случайных чисел. Количество чисел и диапозон значений задаются параметром.
- `cpu-dedup`: Дедупликация элементов в массиве. Массив генерируется на основе
случайных чисел. Размер массива задаётся параметром.
- `cpu-mat-mul`: Перемножение матриц. Размер матриц задаётся параметром, а
элементы матриц генерируются на основе случайных чисел.
- `cpu-calc-md5`: Подсчитать хеш md5 для текста полученного конкатенацией
фрагментов текста выбранных с помощью генератора случайных чисел.
- `cpu-calc-crc`: Посчитать контрольную сумму crc для текста полученного
конкатенацией фрагментов текста выбранных с помощью генератора случайных чисел.
Нагрузчик, работающий с внешней памятью (группа **ema**):
- `ema-replace-int`: Поиск элемента в массиве чисел во внешней памяти и замена
значения на другое. Файл для поиска значения генерируется в произвольном
формате, размер задаётся через параметр.
- `ema-replace-str`: Поиск подстроки в тексте во внешней памяти и замена на
другую строку того же размера. Файл для поиска значения генерируется в
произвольном формате, размер задаётся через параметр.
- `ema-sort-int`: Сортировка массива чисел во внешней памяти. Весь массив не
может быть загружен в память, поэтому сортировка происходит частями.
- `ema-traverse-graph`: Обход k-регулярного направленного графа,
сериализованного в файл, и выполнение модифицирующей операции над определенной
вершиной графа. Поиск вершины происходит по хранимому в ней значению, возможно с
ограничением глубины поиска.
Формат хранения: вершина (struct Node) определяется её отступом от начала файла (id=index*(sizeof struct Node)), в вершине хранится одно значение типа фиксированного размера и k номеров вершин, в которые из неё можно попасть; в файле вершины хранятся последовательно с выравниванием соответствующим размеру структуры. Тип значения, хранимого в вершине, и значение k подбираются таким образом, чтобы с учетом выравнивания не было неиспользуемой памяти.
При генерации графа случайно задается значение, хранимое в вершине и номера соседних вершин, отдельным параметром генератора задется шанс получения номера соседней вершины больше или меньше номера данной вершины (соседняя вершина раньше или позже).
- `ema-join-*`: Необходимо реализовать алгоритм equi-join для объединения
таблиц в файлах. На вход подаются два файла, результат их объединения пишется в
новый файл. В первой строке файла содержится количество строчек в файле. В
каждой последующей строчке входного файла содержится два значения, разделенных
пробелами: численный идентификатор и строка без пробелов фиксированного размера
8 байт. Строка является валидным английским словом. Таблицы необходимо
объединять по идентификатору.
По варианту выдается стратегия джоина:
- `ema-join-nl`: Nested Loop Join
- `ema-join-hash`: Hash Join Join
- `ema-join-sm`: Sort + Merge Join
Количество строк входных таблиц включают все комбинации пар значений: 5, 10, 100, 1000, 10000."