<div>Hello List,</div><div> </div><div>I work on Ubuntu 16.10 kernel 4.8 with audit v2.7.7, and we wrote plugin who get its input from audispd</div><div> </div><div>This plugin process audit messages, mostly syscalls.</div><div> </div><div>In out test we saw that malloc of auditd tooks ~5% among 9% of total CPU time audit consumes.</div><div> </div><div> </div><div>I wonder, whether libauparse indeed need to build dynamic lists, ex</div><div><div> </div><div>auparse/nvlist.c:       nvnode* newnode = malloc(sizeof(nvnode));</div><div> </div></div><div>Most audit message types have strict structure, the only name of exec and comm fields have variable length.</div><div> </div><div>And besides when I do field search, I actually do not need field name, I can pass some ENUM.</div><div> </div><div> </div><div>I even think we can live without files or path names, inode +filesystem id will be enough to have in log</div><div> </div><div>This can be configurable option and we can add to ausearch /aureport the task to translate inode to file name.</div><div> </div><div>What do you think?</div><div> </div><div> </div><div> </div><div> </div>