Parses existing Chia plotter log files and builds a .csv file containing all the important details

Overview

Chia Log Analysis

Build Total alerts Language grade: C/C++

Parses through Chia plotter log files and plops all the juicy details into a CSV file!

Build

See below for instructions if you prefer to build the application yourself. Otherwise feel free to simply download the binaries from the latest release.

Build Prerequisites

  • CMake
  • C++ compiler (with support for C++17)

Build Instructions

git clone https://github.com/Pengor/chia-log-analysis.git

cd chia-log-analysis

cmake -E make_directory ./build

cmake -S src -B build

cmake --build build --config Release

Run

Navigate to the location of the built or downloaded binary and run one of the following options.

Guided prompts:

./chia-log-analysis

Command-line arguments:

./chia-log-analysis -i <logfile directory> -o <output filename>

where <logfile directory> is the path to your chia plotter logs and <output filename> is the path to the .csv file you want to save (file extension should be specified by the user).

Note for Windows

If the application does not run you may need to install the Microsoft Visual C++ Redistributable for Visual Studio 2019.

About

What info does it parse?

For each file it parses as much as it can find of the following (I imagine I'm not the only one who's had a plot interrupted):

  • Temp dir 1
  • Temp dir 2
  • Plot size
  • Buffer size
  • Buckets
  • Threads
  • Stripe size
  • Start date
  • Phase 1 duration
  • Phase 2 duration
  • Phase 3 duration
  • Phase 4 duration
  • Total time
  • Copy time
  • Plot filename

Why does this exist?

I started doing some chia plotting and wanted to compare the performance of different settings used during plotting. I imagine there are other tools out there that do the same thing as this one, but it gave me an excuse to do some more C++ learning outside my typical ecosystem. If you find any bugs or want to see a feature added please feel free to open a new Issue.

Comments
  • Add some additional metrics to CSV output

    Add some additional metrics to CSV output

    Hello!

    At your discretion and convenience please merge the following changes:

    • Bump version to 0.5.
    • Add log's filename, unique plot ID, and per-phase/total CPU utilization to CSV output.
    • Default to only providing tmpdir1, or if tmpdir2 exists, tmpdir2.

    Two tmpdirs are rarely used in practice and are only recommended for phase 1/2 in ramdisk, which is unlikely on contemporary hardware (200+ GB of ram necessary per plot).

    enhancement 
    opened by michaelclarkcuadrado 2
  • Support for multiple plots log files

    Support for multiple plots log files

    When plotting using the CLI the -n option controls the number of plots to be created. All of these plots are piped into a single log file. I would be fantastic for the chia-log-analysis to be able to parse and extract the info about all the plots

    Attached you can find a couple of logs with multiple plots: 1.log 2.log

    Thank you very much!

    enhancement 
    opened by cristi 2
  • Time format and additional columns

    Time format and additional columns

    Hi - Thanks for this great tool.

    It would be great to have the times shown in HH:mm and maybe just mm for Phase 4. At the moment, I convert them in the spreadsheet each time,

    Also, is there a way to add some additional columns to the table, esp. the log file name? - this would really help with identifying the settings used for that particular job (set up via Swar plot manager).

    Cheers.

    duplicate enhancement 
    opened by keeboudi 1
  • Add cpu percentage

    Add cpu percentage

    Hey

    In log files we have cpu percentage for each phase. It would be very convenient to keep track of cpu usage for each phase.

    If you make a log analyzer, then you need to track everything, right?)

    enhancement 
    opened by koninka 1
  • Change format of *Start date* data

    Change format of *Start date* data

    Due to the default format of the Chia plotter log Start date data it is not easily sortable by spreadsheet applications once Chia Log Analysis has output a CSV file. Chia Log Analysis should interpret the string from the log and output it in a more easily sortable format such as: YYYY-MM-DD hh:mm:ss

    enhancement 
    opened by Pengor 1
  • Ensure log files from blockchain version 1.1.1 are supported

    Ensure log files from blockchain version 1.1.1 are supported

    Chia blockchain release 1.1.1 mentions the following:

    Logging now includes year, month, and date.

    A plot log file generated since this release needs to be confirmed for compatibility with chia-log-analysis.

    good first issue compatibility 
    opened by Pengor 1
  • Add

    Add "Copy time" column to output

    Newer plotter log files list a "Copy time" that could be included in the parsing output.

    Need to ensure compatibility with older log files that didn't list this.

    enhancement good first issue 
    opened by Pengor 0
  • Add support for UTF-16 character encoding

    Add support for UTF-16 character encoding

    This utility is extremely useful - I used to have to manually parse and enter the info into a spreadsheet by hand :((

    This works great for logs created by the Chia UI logger. However, I have recently started to plot using the CLI. I pipe the output into a log via Powershell tee command. This produces a similar file BUT one major difference is that it does not have the entire block at the top - it starts with the "Starting plotting progress into temporary dirs: xxx" line onwards. I've attached a sample log file. _202105312205.log

    This causes the utility to just crash out with no output. Perhaps it would be great if the utility could be modified so it'll skip missing info (treat as blank) and move on to parse the remaining info?

    Thanks again for this useful time-saving tool!

    enhancement 
    opened by denniskhk 6
  • GCC 8 not supported

    GCC 8 not supported

    When running the last build command on debian 10, version gcc 8.

    I get the following error

    [email protected]:~/chia-log-analysis$ cmake --build build --config Release [ 25%] Linking CXX executable chia-log-analysis /usr/bin/ld: CMakeFiles/chia-log-analysis.dir/main.cpp.o: in functionmain': main.cpp:(.text+0x1ab): undefined reference to std::filesystem::file_size(std::filesystem::__cxx11::path const&)' /usr/bin/ld: main.cpp:(.text+0x434): undefined reference tostd::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: main.cpp:(.text+0x14c7): undefined reference to std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/chia-log-analysis.dir/main.cpp.o: in functionstd::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&)': main.cpp:(.text._ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathE[_ZNSt10filesystem7__cxx1118directory_iteratorC5ERKNS0_4pathE]+0x26): undefined reference to std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&, std::filesystem::directory_options, std::error_code*)' /usr/bin/ld: CMakeFiles/chia-log-analysis.dir/main.cpp.o: in functionstd::filesystem::__cxx11::path::path<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::filesystem::__cxx11::path>(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::filesystem::__cxx11::path::format)': main.cpp:(.text._ZNSt10filesystem7__cxx114pathC2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_EERKT_NS1_6formatE[_ZNSt10filesystem7__cxx114pathC5INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_EERKT_NS1_6formatE]+0x64): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' /usr/bin/ld: CMakeFiles/chia-log-analysis.dir/InputHandler.cpp.o: in functionstd::filesystem::is_directory(std::filesystem::__cxx11::path const&)': InputHandler.cpp:(.text._ZNSt10filesystem12is_directoryERKNS_7__cxx114pathE[_ZNSt10filesystem12is_directoryERKNS_7__cxx114pathE]+0x14): undefined reference to std::filesystem::status(std::filesystem::__cxx11::path const&)' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/chia-log-analysis.dir/build.make:114: chia-log-analysis] Error 1 make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/chia-log-analysis.dir/all] Error 2 make: *** [Makefile:84: all] Error 2

    enhancement 
    opened by pacio5 2
Releases(v0.5)
Owner
Drew M Johnson
embedded systems software engineer
Drew M Johnson
Elecrypt core protocol details

This codes are compatible with esp8266 nodemcu 1.0 on Arduino board.media/esp8266nodemcu.png

null 8 Nov 6, 2022
BTCU Wallet is the original Bitcoin Ultimatum client and it builds the backbone of the network.

The concept of BTCU is similar to the concept of the second cryptocurrency by capitalization - Ethereum.

Bitcoin Ultimatum (BTCU) 31 Jul 1, 2022
LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code.

LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code.

OpenBSD LibreSSL Portable 1.2k Jan 5, 2023
Distributed, Encrypted, Fractured File System - A custom distributed file system written in C with FUSE

A custom FUSE-based filesystem that distributes encrypted shards of data across machines on a local network, allowing those files to be accessible from any machine.

Charles Averill 14 Nov 2, 2022
A basic C++ cryptocurrency/block-chain. Includes a basic wallet system. See README.md for all the inclusions and future additions.

Cryptocurrency Project C++ cryptocurrency/block-chain. Mostly basic blockchain for now. New Additions are in the works(see below). This file details w

null 2 Dec 23, 2021
HashLibPlus is a recommended C++11 hashing library that provides a fluent interface for computing hashes and checksums of strings, files, streams, bytearrays and untyped data to mention but a few.

HashLibPlus HashLibPlus is a recommended C++11 hashing library that provides a fluent interface for computing hashes and checksums of strings, files,

Telepati 6 Dec 22, 2022
simple encryptor and decryptor for files written in c++

What this 3ndecf1le simple encryptor and decryptor for files written in c++ How To Setup 3ndecf1le sudo apt install g++;g++ encrypt.cpp -o encrypt;g++

sami 1 Jan 23, 2022
FCracker is a command line tool designed to brute force encrypted files like zip, 7z, rar, pdf etc.

FCrack is a command-line tool designed to brute force encrypted files like zip, 7z, rar, pdf, gpg etc.

null 23 Dec 21, 2022
UnrealKey is a tool for automatically finding the AES-256 decryption keys for Unreal Engine 4 encrypted pak files.

UnrealKey UnrealKey is a tool for automatically finding the AES-256 decryption keys for Unreal Engine 4 encrypted pak files.

Devin Acker 39 Dec 17, 2022
HIBA is a system built on top of regular OpenSSH certificate-based authentication that allows to manage flexible authorization of principals on pools of target hosts without the need to push customized authorized_users files periodically.

HIBA is a system built on top of regular OpenSSH certificate-based authentication that allows to manage flexible authorization of principals on pools of target hosts without the need to push customized authorized_users files periodically.

Google 333 Dec 31, 2022
Library and command line tool to detect SHA-1 collision in a file

sha1collisiondetection Library and command line tool to detect SHA-1 collisions in files Copyright 2017 Marc Stevens [email protected] Distributed

Marc Stevens 1.2k Dec 29, 2022
CoinBrowser is a tool for Freqtrade where the program writes pairs into text file to be used with spesific exchange.

CoinBrowser CoinBrowser is a tool for Freqtrade where the program writes pairs into text file to be used with spesific exchange. Data for this program

null 25 Dec 14, 2022
a header-file-only, SHA256 hash generator in C++

PicoSHA2 - a C++ SHA256 hash generator Copyright © 2017 okdshin Introduction PicoSHA2 is a tiny SHA256 hash generator for C++ with following propertie

Shintarou Okada 531 Dec 29, 2022
Transparent file encryption in git

git-crypt - transparent file encryption in git git-crypt enables transparent encryption and decryption of files in a git repository. Files which you c

Andrew Ayer 7k Dec 30, 2022
A tool to decrypt Call of Duty: World War II's Fast File

A tool to decrypt Call of Duty: World War II's Fast File. This tool was made to allow people making HUDs in Call of Duty: Black Ops III's mod tools to aquire the assets needed to port HUDs from Call of Duty: World War II.

Philip 5 Sep 3, 2022
A collection of public domain/unlicense single-file cryptography

simple-crypto A collection of single-file public domain/unlicense cryptographic functions in different programming languages. Feel free to copy-paste

null 4 Sep 24, 2022
x509cert is a tool and library for generating X.509 certificates and certificate requests.

x509cert is a tool and library for generating X.509 certificates and certificate requests. It is written in C99 and uses BearSSL to decode keys and compute signatures.

Michael Forney 10 Sep 5, 2022
Text-Crypt is a tool which encrypts and decrypts texts using a specific and certain key.

Text-Crypt is a tool which encrypts and decrypts texts using a specific and certain key. This tool uses Caesar Cypher Algorithm to encrypt and decrypt a given text.

AnonabdulJ 4 Dec 24, 2021