Node.js bindings for libCacheSim - A high-performance cache simulator and analysis library supporting LRU, FIFO, S3-FIFO, Sieve and other caching algorithms.
- High Performance: Built on the optimized libCacheSim C library
- Multiple Algorithms: Support for LRU, FIFO, LFU, ARC, Clock, S3-FIFO, Sieve, and more
- Various Trace Types: Support for vscsi, csv, txt, binary, and oracle trace formats
- Pre-compiled Binaries: Fast installation with no build tools required
- Cross-platform: Support for Linux (x64) and macOS (x64, ARM64)
npm install libcachesim-nodeThe package includes pre-compiled binaries for supported platforms. No additional build tools or dependencies are required for end users.
- Linux: x64 (Ubuntu 18.04+, other distributions with compatible glibc)
- macOS: x64 (Intel) and ARM64 (Apple Silicon)
If pre-compiled binaries are not available for your platform, please check the releases page for updates or submit an issue.
const { runSimulation, getSupportedAlgorithms } = require('libcachesim-node');
// Get supported algorithms
console.log('Supported algorithms:', getSupportedAlgorithms());
// Run a cache simulation
const result = runSimulation(
'/path/to/trace.vscsi', // Path to trace file
'vscsi', // Trace type
's3fifo', // Cache algorithm
'1mb' // Cache size
);
console.log('Simulation results:', result);Get the version of the libCacheSim Node.js binding.
Returns: String containing the version number (e.g., "1.0.1")
Run a cache simulation with specified parameters.
Parameters:
tracePath(string): Path to the trace filetraceType(string): Type of trace file ('vscsi', 'csv', 'txt', 'binary', 'oracle')algorithm(string): Cache replacement algorithmcacheSize(string): Cache size (e.g., '1mb', '512kb', '2gb')
Returns: Object containing simulation results including hit rate, miss count, etc.
Get a list of supported cache algorithms.
Returns: Array of algorithm names
Get a list of supported trace file types.
Returns: Array of trace type names
The following cache replacement algorithms are supported:
- LRU (Least Recently Used)
- FIFO (First In, First Out)
- LFU (Least Frequently Used)
- ARC (Adaptive Replacement Cache)
- Clock (Clock/Second Chance)
- S3-FIFO (Simple, Scalable, Scan-resistant FIFO)
- Sieve (Eviction algorithm with lazy promotion)
- vscsi: VMware vSCSI trace format
- csv: Comma-separated values format
- txt: Plain text format
- binary: Binary trace format
- oracle: Oracle optimal algorithm simulation
The package includes a command-line interface:
# Install globally for CLI access
npm install -g libcachesim-node
# Run simulation from command line
cachesim-js --trace /path/to/trace.vscsi --algorithm s3fifo --size 1mb
# Check version
cachesim-js --versionIf you need to build from source or contribute to development:
# Clone the repository
git clone https://github.com/1a1a11a/libCacheSim.git
cd libCacheSim/libCacheSim-node
# Install dependencies
npm install
# Build from source (requires cmake, build tools)
npm run build-from-source
# Run tests
npm test- Node.js 14+
- CMake 3.10+
- C/C++ compiler (GCC, Clang, or MSVC)
- System dependencies:
- Linux:
build-essential cmake libglib2.0-dev libzstd-dev - macOS:
cmake glib zstd(via Homebrew)
- Linux:
The Node.js binding version is automatically synchronized with the main libCacheSim project version. To manually sync versions, run:
python3 scripts/sync_node_version.pyThis ensures that the Node.js binding version in package.json matches the version in the main project's version.txt file.
This package uses prebuild-install for binary distribution:
- Pre-compiled Binaries: Automatically downloaded from GitHub releases during installation
- Automated Building: GitHub Actions automatically builds binaries for all supported platforms
- Standard Tooling: Uses industry-standard
prebuildandprebuild-installpackages
If installation fails, try the following:
# Clear npm cache
npm cache clean --force
# Reinstall with verbose logging
npm install libcachesim-node --verbose
# Force source compilation
npm install libcachesim-node --build-from-sourceIf you see binary loading errors:
- Ensure your platform is supported
- Check that the
prebuildsdirectory exists and contains your platform's binary - Try reinstalling the package
- Check Node.js version compatibility (requires Node.js 14+)
If source compilation fails:
- Install required system dependencies (including ninja-build)
- Ensure CMake 3.10+ is available
- Check that libCacheSim builds successfully:
cd .. && mkdir _build && cd _build && cmake -G Ninja .. && ninja
Contributions are welcome! Please see the main libCacheSim repository for contribution guidelines.
MIT License - see the LICENSE file for details.
- libCacheSim - The core C library
- libCacheSim Python bindings - Python interface
If you use libCacheSim in your research, please cite:
@misc{libcachesim,
title={libCacheSim: A High-Performance Cache Simulator},
author={Tian, Murphy and others},
year={2023},
url={https://github.com/1a1a11a/libCacheSim}
}