[My ikiwiki instance](http://www.ipol.im/) is quite heavy. 674M of data in the source repo, 1.1G in its .git folder.
Lots of \[[!img ]] (~2200), lots of \[[!teximg ]] (~2700). A complete rebuild takes 10 minutes.
We could use a big machine, with plenty of CPUs. Could some multi-threading support be added to ikiwiki, by forking out all the external heavy plugins (imagemagick, tex, ...) and/or by processing pages in parallel?
Disclaimer: I know nothing of the Perl approach to parallel processing.
> I agree that it would be lovely to be able to use multiple processors to speed up rebuilds on big sites (I have a big site myself), but, taking a quick look at what Perl threads entails, and taking into acount what I've seen of the code of IkiWiki, it would take a massive rewrite to make IkiWiki thread-safe - the API would have to be completely rewritten - and then more work again to introduce threading itself. So my unofficial humble opinion is that it's unlikely to be done.
> Which is a pity, and I hope I'm mistaken about it.
>>> It's at this point that doing profiling for a particular site would come
>>> in, because it would depend on the site content and how exactly IkiWiki is
>>> being used as to what the performance bottlenecks would be. For the
>>> original poster, it would be image processing. For me, it tends to be
>>> PageSpecs, because I have a lot of maps and reports.
>>> But I sincerely don't think that Disk I/O is the main bottleneck, not when
>>> the original poster mentions CPU usage, and also in my experience, I see
>>> IkiWiki chewing up 100% CPU usage one CPU, while the others remain idle. I
>>> haven't noticed slowdowns due to waiting for disk I/O, whether that be a
>>> system with HD or SSD storage.
>>> I agree that large sites are probably not the most common use-case, but it
>>> can be a chicken-and-egg situation with large sites and complete rebuilds,
>>> since it can often be the case with a large site that rebuilding based on
>>> dependencies takes *longer* than rebuilding the site from scratch, simply
>>> because there are so many pages that are interdependent. It's not always
>>> the number of pages itself, but how the site is being used. If IkiWiki is
>>> used with the absolute minimum number of page-dependencies - that is, no
>>> maps, no sitemaps, no trails, no tags, no backlinks, no albums - then one
>>> can have a very large number of pages without having performance problems.
>>> But when you have a change in PageA affecting PageB which affects PageC,
>>> PageD, PageE and PageF, then performance can drop off horribly. And it's a
>>> trade-off, because having features that interlink pages automatically is
>>> really nifty ad useful - but they have a price.
>>> I'm not really sure what the best solution is. Me, I profile my IkiWiki builds and try to tweak performance for them... but there's only so much I can do.