[konsole] [Bug 406395] konsole history fill tmpfs

Mariusz Glebocki bugzilla_noreply at kde.org
Wed Apr 10 22:24:29 BST 2019


https://bugs.kde.org/show_bug.cgi?id=406395

Mariusz Glebocki <mglb at arccos-1.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mglb at arccos-1.net
             Status|REPORTED                    |CONFIRMED
     Ever confirmed|0                           |1

--- Comment #1 from Mariusz Glebocki <mglb at arccos-1.net> ---
Konsole v18.12.03, Ubuntu 18.04
Test environment: default config (ran with empty $HOME) + infinite scrollback +
store history in /tmp.


Before:
   0  tmp/konsole-J14446.history
   0  tmp/konsole-M14446.history
   0  tmp/konsole-T14446.history

Running: base64 -w 511 /dev/urandom | head -n $((1024 * 1024))

After:
 48M  tmp/konsole-L14446.history
8.0G  tmp/konsole-S14446.history
6.0M  tmp/konsole-n14446.history

The command above prints "512MB" of characters (assuming 1 character = 1B).
Character struct has 16B, so it is consistent with Konsole code.
For reference: This is slightly above 6.7 million lines with 80 characters
each.


Lets try compressing history file (i.e. single-format random alphanumeric
characters).

Algorithm: LZ4, 4MB block, fast compression (1)
Result: 8GB reduced to 1.5G => 3B/character.

Characters with single format have most of the structure repeated.
Additionally, most people do not read half GB of random characters (I hope so).


More realistic input:

Running: find src tests tools \( -name '*.cpp' -or -name '*.h' -or -name '*.py'
\) -exec pygmentize  {} \;

  24M /tmp/konsole-F14446.history
  47K /tmp/konsole-V14446.history
 374K /tmp/konsole-a14446.history

This outputs all Konsole source files, colorized. But not too much colorized
(only keywords, function name in definitions, strings, primitive types,
preprocessor). Good simulation of fancy prompt, colorful greps and ls here and
there, errors/warnings from compiler, and mostly regular text.

Algorithm: The same as above
Result: 24M reduced to 3.8M => 2.5B/character.

This might be even better with another algorithm; LZ4 is just the first fast
algorithm I thought of.


Actually it would be great to use compression even on in-memory history. I'll
probably implement compression after finishing my current tasks, unless someone
else wants to do it.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the konsole-devel mailing list