| OLD | NEW |
| 1 ================================= | 1 ================================= |
| 2 Tips for performance optimization | 2 Tips for performance optimization |
| 3 ================================= | 3 ================================= |
| 4 | 4 |
| 5 This file provides tips for troubleshooting slow or wasteful fuzzing jobs. | 5 This file provides tips for troubleshooting slow or wasteful fuzzing jobs. |
| 6 See README for the general instruction manual. | 6 See README for the general instruction manual. |
| 7 | 7 |
| 8 1) Keep your test cases small | 8 1) Keep your test cases small |
| 9 ----------------------------- | 9 ----------------------------- |
| 10 | 10 |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 on a particular schedule and is known to underestimate the needs of | 160 on a particular schedule and is known to underestimate the needs of |
| 161 short-lived processes spawned by afl-fuzz (or any other fuzzer). On Linux, | 161 short-lived processes spawned by afl-fuzz (or any other fuzzer). On Linux, |
| 162 this can be fixed with: | 162 this can be fixed with: |
| 163 | 163 |
| 164 cd /sys/devices/system/cpu | 164 cd /sys/devices/system/cpu |
| 165 echo performance | tee cpu*/cpufreq/scaling_governor | 165 echo performance | tee cpu*/cpufreq/scaling_governor |
| 166 | 166 |
| 167 On other systems, the impact of CPU scaling will be different; when fuzzing, | 167 On other systems, the impact of CPU scaling will be different; when fuzzing, |
| 168 use OS-specific tools to find out if all cores are running at full speed. | 168 use OS-specific tools to find out if all cores are running at full speed. |
| 169 | 169 |
| 170 - Transparent huge pages. Some allocators, such as jemalloc, can incur a |
| 171 heavy fuzzing penalty when transparent huge pages (THP) are enabled in the |
| 172 kernel. You can disable this via: |
| 173 |
| 174 echo never > /sys/kernel/mm/transparent_hugepage/enabled |
| 175 |
| 170 - Suboptimal scheduling strategies. The significance of this will vary from | 176 - Suboptimal scheduling strategies. The significance of this will vary from |
| 171 one target to another, but on Linux, you may want to make sure that the | 177 one target to another, but on Linux, you may want to make sure that the |
| 172 following options are set: | 178 following options are set: |
| 173 | 179 |
| 174 echo 1 >/proc/sys/kernel/sched_child_runs_first | 180 echo 1 >/proc/sys/kernel/sched_child_runs_first |
| 175 echo 1 >/proc/sys/kernel/sched_autogroup_enabled | 181 echo 1 >/proc/sys/kernel/sched_autogroup_enabled |
| 176 | 182 |
| 177 Setting a different scheduling policy for the fuzzer process - say | 183 Setting a different scheduling policy for the fuzzer process - say |
| 178 SCHED_RR - can usually speed things up, too, but needs to be done with | 184 SCHED_RR - can usually speed things up, too, but needs to be done with |
| 179 care. | 185 care. |
| 180 | 186 |
| 181 9) If all other options fail, use -d | 187 9) If all other options fail, use -d |
| 182 ------------------------------------ | 188 ------------------------------------ |
| 183 | 189 |
| 184 For programs that are genuinely slow, in cases where you really can't escape | 190 For programs that are genuinely slow, in cases where you really can't escape |
| 185 using huge input files, or when you simply want to get quick and dirty results | 191 using huge input files, or when you simply want to get quick and dirty results |
| 186 early on, you can always resort to the -d mode. | 192 early on, you can always resort to the -d mode. |
| 187 | 193 |
| 188 The mode causes afl-fuzz to skip all the deterministic fuzzing steps, which | 194 The mode causes afl-fuzz to skip all the deterministic fuzzing steps, which |
| 189 makes output a lot less neat and can ultimately make the testing a bit less | 195 makes output a lot less neat and can ultimately make the testing a bit less |
| 190 in-depth, but it will give you an experience more familiar from other fuzzing | 196 in-depth, but it will give you an experience more familiar from other fuzzing |
| 191 tools. | 197 tools. |
| OLD | NEW |