diag: add memory profiling at build phases

This commit is contained in:
Ricardo
2026-03-30 17:35:49 +02:00
parent d5b9579d90
commit a96787bef4

View File

@@ -23,6 +23,17 @@ const postGraph = esmRequire("@rknightuk/eleventy-plugin-post-graph");
const __dirname = dirname(fileURLToPath(import.meta.url)); const __dirname = dirname(fileURLToPath(import.meta.url));
const siteUrl = process.env.SITE_URL || "https://example.com"; const siteUrl = process.env.SITE_URL || "https://example.com";
// Memory profiler — logs RSS + V8 heap at key build phases
function logMemory(phase) {
const mem = process.memoryUsage();
const rss = (mem.rss / 1024 / 1024).toFixed(0);
const heapUsed = (mem.heapUsed / 1024 / 1024).toFixed(0);
const heapTotal = (mem.heapTotal / 1024 / 1024).toFixed(0);
const external = (mem.external / 1024 / 1024).toFixed(0);
const arrayBuffers = (mem.arrayBuffers / 1024 / 1024).toFixed(0);
console.log(`[mem] ${phase}: RSS=${rss}MB heap=${heapUsed}/${heapTotal}MB external=${external}MB buffers=${arrayBuffers}MB`);
}
export default function (eleventyConfig) { export default function (eleventyConfig) {
// Don't use .gitignore for determining what to process // Don't use .gitignore for determining what to process
// (content/ is in .gitignore because it's a symlink, but we need to process it) // (content/ is in .gitignore because it's a symlink, but we need to process it)
@@ -1228,6 +1239,7 @@ export default function (eleventyConfig) {
// Exit code 2 = batch complete, more work remains → re-spawn. // Exit code 2 = batch complete, more work remains → re-spawn.
// Manifest caching makes incremental builds fast (only new posts get generated). // Manifest caching makes incremental builds fast (only new posts get generated).
eleventyConfig.on("eleventy.before", () => { eleventyConfig.on("eleventy.before", () => {
logMemory("before-build (OG start)");
const contentDir = resolve(__dirname, "content"); const contentDir = resolve(__dirname, "content");
const cacheDir = resolve(__dirname, ".cache"); const cacheDir = resolve(__dirname, ".cache");
const siteName = process.env.SITE_NAME || "My IndieWeb Blog"; const siteName = process.env.SITE_NAME || "My IndieWeb Blog";
@@ -1343,6 +1355,7 @@ export default function (eleventyConfig) {
// so we cannot use the incremental flag to guard pagefind. Use a one-shot flag instead. // so we cannot use the incremental flag to guard pagefind. Use a one-shot flag instead.
let pagefindDone = false; let pagefindDone = false;
eleventyConfig.on("eleventy.after", async ({ dir, directories, runMode, incremental }) => { eleventyConfig.on("eleventy.after", async ({ dir, directories, runMode, incremental }) => {
logMemory("after-build (pre-hooks)");
// Markdown for Agents — generate index.md alongside index.html for articles // Markdown for Agents — generate index.md alongside index.html for articles
const mdEnabled = (process.env.MARKDOWN_AGENTS_ENABLED || "true").toLowerCase() === "true"; const mdEnabled = (process.env.MARKDOWN_AGENTS_ENABLED || "true").toLowerCase() === "true";
if (mdEnabled && !incremental) { if (mdEnabled && !incremental) {