MacPorts on COW filesystem

Clemens Lang cal at macports.org
Sat Jul 11 02:00:37 PDT 2015



----- On 11 Jul, 2015, at 00:37, René J.V. Bertin rjvbertin at gmail.com wrote:

> On Friday July 10 2015 23:02:57 Clemens Lang wrote:
> 
>> > (as well as a significant performance bottleneck).
>> 
>> I am completely at loss how you determine *significant* here. The SQLite
> 
> `port installed` taking upwards of 20 minutes before apparently doing anything
> (as suggested after adding -vd)?
> It doesn't help in this case that the pool sits on a device that's mounted on a
> VM guest over VirtualBox's USB emulation layer.

OK, that sounds like something you should also report to the developers of SQLite.
They may not be aware of the performance of SQLite on ZFS. However, I'm not sure
how much of that is SQLite's fault vs. just bad FS performance.

> How long should registry.db-journal be present?

It should disappear when the database is closed, which happens when MacPorts
terminates.


>> database is absolutely not MacPorts' performance bottleneck, not by far. I would
> 
> Probably not in normal operation on a more common filesystem. But from what I
> understand it's relatively easy to get severe performance penalties in DB
> operations on a ZFS dataset if you don't take the nature of that underlying
> filesystem into account. My experience with the apt/dpkg registry on Linux
> seems to confirm that, as well as today's observations with the pool mentioned
> above.

Yes, that's possible. I'd expect the developers of these databases to be interested
in any help you can offer.


>> improvements here, and the changes would actually benefit a large number of
>> people rather than a few that happen to run on a COW filesystem.
> 
> That's why I asked if there was a way to tune the registry access parameters
> somewhere; I don't want to spend a lot of time on this. Esp. not since whatever
> was going on has moved on (access times are reasonable once more).

Edit src/cregistry.c, function reg_attach; add a new SQLite query after
 ATTACH DATABASE '%q' AS registry
that uses the PRAGMA command to choose the journal mode.

-- 
Clemens Lang


More information about the macports-dev mailing list