Re: Caching strategy improvements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sorry It appears I have not been replying to the list.

I would like to add testing on 2.12.6 before the much improved
performance changes was ~40s cache build times with significant disk
I/O. So the newly improved scanning is much appreciated but doesn't
solve all the issues with cache build times.

On Mon, Feb 26, 2018 at 5:29 AM, Kurt Kartaltepe <kkartaltepe@xxxxxxxxx> wrote:
> 2.12.93 as released on https://www.freedesktop.org/software/fontconfig/release/
>
> On Mon, Feb 26, 2018 at 5:27 AM, Behdad Esfahbod <behdad@xxxxxxxxxx> wrote:
>> Just to make sure we are on the same page, which fontconfig version are you
>> testing with?
>>
>> On Mon, Feb 26, 2018 at 3:21 AM, Kurt Kartaltepe <kkartaltepe@xxxxxxxxx>
>> wrote:
>>>
>>> For clarification, I have tested with ONLY the ttf fonts on my system.
>>> In this case the normal 18s cache build step takes 15s. This suggests
>>> to me there is no significant difference between FON and TTF, as they
>>> made up ~21% of my fonts and removing them resulted in a proportionate
>>> savings. Sorry If my OP was misleadingly suggesting that FON files
>>> were exceptionally slow, I only meant that they may not have received
>>> the same improvement as TTF files which may just be my
>>> misunderstanding of the changes you made and lack of testing.
>>>
>>> I am concerned with why it seems acceptable to rebuild the entire
>>> cache when only a tiny portion of it has actually changed. Users for
>>> which rebuilding the cache is a significant event are those with large
>>> font libraries. These users are are by their very nature more likely
>>> to add or remove fonts from their library. It seems that this is the
>>> worst possible case for the current caching strategy, and *this* seems
>>> like an issue worth fixing.
>>>
>>> In this case if checksuming files is slower than scanning them the
>>> issue still stands. Why checksum files that haven't changed? Does
>>> fontconfig not trust filesystem metadata? It would appear directory
>>> change times are used in detecting when to rescan so why can this not
>>> be extended to files instead of the expensive checksum?
>>>
>>> FWIW an md5sum of my entire font library takes ~1s with hot caches
>>> which I still find unacceptable as my library is possibly
>>> significantly smaller and my system significantly more powerful than a
>>> potential user's.
>>>
>>> --Kurt Kartaltepe
>>>
>>> On Sun, Feb 25, 2018 at 9:10 PM, Behdad Esfahbod <behdad@xxxxxxxxxx>
>>> wrote:
>>> > What's with fon files being slow? Please report *that* and let's fix it.
>>> >
>>> > We've made scanning, like, 100x faster already. 2007 stats are
>>> > irrelevant.
>>> > Checksuming files is slower than scanning them now.
>>> >
>>> > On Sun, Feb 25, 2018 at 8:08 AM, Kurt Kartaltepe <kkartaltepe@xxxxxxxxx>
>>> > wrote:
>>> >>
>>> >> While trying to move a project to the pango stack I noticed the native
>>> >> font selection backends were bad/useless on some platforms (like
>>> >> windows see [1]). So I opted to try and use fontconfig on all
>>> >> platforms as it performs outstandingly and has wonderful defaults for
>>> >> all platforms.
>>> >>
>>> >> However during this transition I noticed that there are some major
>>> >> issues with cache build speed and during investigation I see that
>>> >> there has recently been effort to improve the situation[2]. From what
>>> >> I can tell the fontconfig team has maintained that these cache issues
>>> >> were irrelevent for the primary fontconfig platform (linux) [3]. On
>>> >> linux of course the cache is global and maintained usually by font
>>> >> packages ensuring its up-to-date. However it was precisely this the
>>> >> slow cache build times that lead to package managers being required to
>>> >> build in additional tooling to support not rebuilding cache for every
>>> >> font installed [4].
>>> >>
>>> >> Anyway I hope that is enough reason to persuade you that there are
>>> >> substantial improvements to make to the caching strategy and they are
>>> >> beneficial not only for the odd platforms (osx, windows) but also for
>>> >> Linux.
>>> >>
>>> >> My question is if fontconfig would be receptive to building/accepting
>>> >> a patch modifying the caching strategy to include checkums per file
>>> >> instead of/in addition to per directory. Currently any change to
>>> >> directory (such as adding a new font) invalidates all fonts within
>>> >> that directory. This means for directories like the system directory
>>> >> it results in re scans of hundreds or more fonts. Thankfully this is
>>> >> faster on platforms like linux where all fonts on freetype. However
>>> >> this improvement in scanning did not carry over to windows with its
>>> >> many FNT (150 on the average install) and even on my very robust
>>> >> development machine building a cache for a mere 650 files takes half a
>>> >> minute. This might be acceptable on install of the application where
>>> >> we can take our time building the cache, but what happens when a user
>>> >> installs 1 more font? A change to cache individual file checksums
>>> >> would provide fontconfig a way to only require the expensive coverage
>>> >> check of a single font instead of the entirety of a users. I dare say
>>> >> with this exact change the need to use a faster less robust coverage
>>> >> check that made scanning freetype fonts faster may be unneeded as the
>>> >> number of scans required to rebuild a cache would reduced 100x on the
>>> >> average system or more.
>>> >>
>>> >> I'm certain such a change would be highly appreciated by all
>>> >> fontconfig consumers who are hoping to use its powerful feature set in
>>> >> a multiplatform context.
>>> >>
>>> >> --Kurt Kartaltepe
>>> >>
>>> >> [1] https://bugzilla.gnome.org/show_bug.cgi?id=162681
>>> >> [2]
>>> >>
>>> >> https://lists.freedesktop.org/archives/fontconfig/2017-August/005986.html
>>> >> [3] https://bugs.freedesktop.org/show_bug.cgi?id=64766
>>> >> [4]
>>> >>
>>> >> https://lists.freedesktop.org/archives/fontconfig/2007-October/002728.html
>>> >> _______________________________________________
>>> >> Fontconfig mailing list
>>> >> Fontconfig@xxxxxxxxxxxxxxxxxxxxx
>>> >> https://lists.freedesktop.org/mailman/listinfo/fontconfig
>>> >
>>> >
>>> >
>>> >
>>> > --
>>> > behdad
>>> > http://behdad.org/
>>
>>
>>
>>
>> --
>> behdad
>> http://behdad.org/
_______________________________________________
Fontconfig mailing list
Fontconfig@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/fontconfig




[Index of Archives]     [Fedora Fonts]     [Fedora Users]     [Fedora Cloud]     [Kernel]     [Fedora Packaging]     [Fedora Desktop]     [PAM]     [Gimp Graphics Editor]     [Yosemite News]

  Powered by Linux