
# "perf_event mmap failed..."报错问题
#### 问题现象
此错误一般出现在JVM的标准输出中。Profiler功能进行CPU热点采样时，会同时采集Native（Linux Kernel + JVM + C/C++）以及Java栈，采集Native栈需要对Java中每个线程的perf_event的fd进行MMap，Linux内核中限制了进程perf_event相关的MMap的总内存大小（默认516 K Bytes）。当Java中线程数较多时，会触发限制并在Java标准输出中打印警告信息perf_event mmap failed...。出现这个告警信息，对Java的运行没有副作用，对业务也没有影响，实际的影响是火焰图中看不到Native的栈。一般来说定位CPU热点问题时，只看Java方法栈就够了，您可以忽略此告警。
#### 解决方案
如果想消除这个错误信息，可以执行以下步骤。
1. 在宿主机上执行以下命令。 
   ```
   echo 1028 > /proc/sys/kernel/perf_event_mlock_kb
   ```
   默认阈值是516，可以逐渐增加，直到不出现告警。该值尽量满足8\*N + 4，N是自然数。例如516 = 512 + 4, 1028 = 1024 + 4。
   
   
2. 重启Docker，即可消除错误。
 
