Home / Companies / Semgrep / Blog / Post Details
Content Deep Dive

Upgrading Semgrep from OCaml 4 to OCaml 5

Blog post from Semgrep

Post Details
Company
Date Published
Author
Nat Mote
Word Count
2,495
Language
English
Hacker News Points
-
Summary

OCaml 5's introduction of multicore support necessitated significant changes, including a major overhaul of the garbage collector and memory allocator to maintain performance across single-threaded and multi-threaded programs. Despite successful benchmarks for most programs, the transition to OCaml 5 led to memory consumption issues in Semgrep, prompting investigations into garbage collection behavior and the introduction of dynamic tuning strategies. Initial assumptions pointed to the absence of garbage collector compaction as the cause, but further analysis revealed that different garbage collector behaviors were responsible. Through experiments, adjusting the space_overhead parameter dynamically based on heap size improved memory management and performance, allowing the successful deployment of OCaml 5 in production. The resultant dynamic garbage collector tuning utility, designed to mimic OCaml 4 performance, was open-sourced for broader application within the OCaml community, with future improvements planned to enhance its adaptability and user customizability.