D16876: [balooctl] Add possibility to create a copy of the index without freelist

Igor Poboiko noreply at phabricator.kde.org
Wed Nov 14 14:10:47 GMT 2018


poboiko created this revision.
poboiko added reviewers: Frameworks, Baloo.
Herald added projects: Frameworks, Baloo.
Herald added a subscriber: kde-frameworks-devel.
poboiko requested review of this revision.

REVISION SUMMARY
  Currently, after the indexing is done, there is a huge difference between `Actual Size` and `Expected Size` in `balooctl indexSize`.
  (I would estimate it as ~30%, based on personal experience). The difference because how `LMDB` works: it never shrinks, and if we ask
  it to remove or replace something, free'd pages go to freelist (i.e. useless empty pages waiting to be reused). That wasted space is
  indeed a freelist (can be checked via `mdb_stat -nf ~/.local/share/baloo/index` -- see `Free pages`).
  
  `LMDB` doesn't allow to compress the DB and remove all free pages "in situ", but it allows to create a copy of the DB without freelist
  (see `mdb_env_copy2` with `MDB_CP_COMPACT` flag).
  
  Because it creates another copy (which might eat a lot of space), I would not suggest to do it automatically, but instead add a possibility to do it manually.
  This patch adds a `copy` command to `balooctl` tool, which does it. It allows to create a backup of index (either in a desired place or in temporary directory), 
  and its main usage is to shrink the DB, in a following way:
  
    $ balooctl copy /tmp/index
    $ balooctl stop
    $ mv /tmp/index ~/.local/share/baloo/index
    $ balooctl start

TEST PLAN
  It works as expected: before copy, indexSize gave me ~500MB, after copy - 327MB
  (funny, the actual size after copy is even smaller than expected size, that is 389MB).
  DB seems to be fine, i.e. searching works

REPOSITORY
  R293 Baloo

BRANCH
  freepages (branched from master)

REVISION DETAIL
  https://phabricator.kde.org/D16876

AFFECTED FILES
  src/engine/database.cpp
  src/engine/database.h
  src/tools/balooctl/main.cpp

To: poboiko, #frameworks, #baloo
Cc: kde-frameworks-devel, ashaposhnikov, michaelh, astippich, spoorun, ngraham, bruns, abrahams
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20181114/b0673d1d/attachment.html>


More information about the Kde-frameworks-devel mailing list