Skip to main content

pcvis

A command line tool for visualizing page cache status of given files

prerequisites

  • install pcstat (Page Cache stat: get page cache stats for files, https://github.com/tobert/pcstat)
    • it has both Linux and macOS binaries since v0.0.1
    • if you are using Linux/macOS, you can skip this step and use pcvis --install-pcstat to install it automatically

installation

via pip

pip install pcvis

After installation, there will be a command called pcvis you can use

manual

  1. Download this repo, copy the pcvis/pcvis.py from this repo
  2. Move pcvis.py into your $PATH (e.g. /usr/local/bin)
mv pcvis.py /usr/local/bin/pcvis
chmod +x /usr/local/bin/pcvis

usage

Visualize a given file's page cache status like below:

# pcstat still needs to be installed, and it will be automatically launched by pcvis
pcvis -f /path/to/my_file

sample outputs

█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░█░░░░█░█░██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█

Via this visualization, you can easily spot that:

  1. the black blocks indicate the part of the file that is in the page cache
  2. this file's header and footer are accessed and loaded in page cache
  3. this file is accessed in a random access manner, and you may even vaguely check if the random access is a binary search, etc

arguments

  • -f or --file: the path to the file(s) you want to visualize its page cache status, e.g. pcvis -f /path/to/foo_file /path/to/bar_file. If you specify this argument, pcvis will launch pcstat automatically and visualize the result. If this argument is not specified, pcvis will read the output of pcstat from stdin, e.g. pcstat -json -pps /path/to/my_file | pcvis

  • -s or --style: there are over 20 different rendering styles to choose from, you can specify a custom style by passing an integer to this argument. The default style is 0. Some sample styles are shown below:

    • e.g. pcvis -s 3 🌕🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌕🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌕🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌕🌑🌑🌑🌑🌑🌑🌑🌑🌑🌕🌑🌑🌑🌑🌕🌑🌕🌑🌕🌕🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌑🌕
    • e.g. pcvis -s 4 💚🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍💚🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍💚🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍💚🤍🤍🤍🤍🤍🤍🤍🤍🤍💚🤍🤍🤍🤍💚🤍💚🤍💚💚🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍🤍💚
  • -i or --install-pcstat: install pcstat to your system. By default, pcstat is installed into /usr/local/bin. You can specify PCVIS_PCSTAT_PATH env var to alter the default install dir. e.g. PCVIS_PCSTAT_PATH=/usr/bin pcvis -i

  • -l or --list: list all styles available

  • -v or --version: show version (only available if you install via pip)

  • -h or --help: show help message

examples

  1. Visualize all csv files' page cache
find . -iname "*.csv" | xargs pcvis -f
  1. Install pcstat automatically into /usr/local/bin
pcvis --install-pcstat
  1. List all available styles
pcvis --list

notes

  1. If you are doing database kernel development and would like to verify IO access pattern for your files, before running the above command for visualization, you may need to clean page cache up front so that such result clearly show the IO access pattern each time
# for linux
sync; echo 1 > /proc/sys/vm/drop_caches 

# for macOS
sudo purge
  1. Some of the icons in the visualization requires UTF8 to render, so you may need to set locale to UTF8 under some systems
export LC_ALL="en_US.utf8"

Otherwise, errors like 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128) may be reported.

Alternatively, you may try using some ASCII only style like pcvis -s 1 -f /path/to/file to avoid such issue.

development

run tests

poetry run pytest

install dev revision locally

make setup

Metadata

Release files for pcvis 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pcvis 0.6.1
File Size Uploaded
pcvis-0.6.1.tar.gz 9.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pcvis 0.6.1
File Interpreter ABI Platform
pcvis-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.1 kB

Release files / pcvis-0.6.1.tar.gz

Download URL pcvis-0.6.1.tar.gz
Size 9.0 kB
Tags Source
SHA-256 checksum
How to use checksums
859bd5ee37e1b78d3605557b670c9001e659750c610ded8a188c2ced5a29d21a
BLAKE2b-256 checksum
How to use checksums
e3b65a13ae73697b8c74f1b9a2a6730e51adcfc12a1c77d95a43dc4a0592e6f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.6.1 CPython/3.11.9 Darwin/23.0.0

Release files / pcvis-0.6.1-py3-none-any.whl

Download URL pcvis-0.6.1-py3-none-any.whl
Size 10.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f4d69bfd1be76363978484aa420a96ed8f48ace8558b1d46fdf41cd3e20fe476
BLAKE2b-256 checksum
How to use checksums
fc7cea47604538c2c8f3b3cc430945167aedc70cf9971b69fdd6a5056219d73c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.6.1 CPython/3.11.9 Darwin/23.0.0

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page