optimize-filesystem-performance

Diagnoses and tunes slow dlt filesystem pipelines reading CSV, Parquet, or JSONL files.

Updated Jun 15, 2026
One-click install
npx skills add https://github.com/aminojagh/LLMZC --skill optimize-filesystem-performance-aminojagh
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: optimize-filesystem-performance
Source: https://github.com/aminojagh/LLMZC/tree/main/05_02_dlt_workshop/.claude/skills/optimize-filesystem-performance
Command: npx skills add https://github.com/aminojagh/LLMZC --skill optimize-filesystem-performance-aminojagh

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Reading files from local disk, S3, GCS, Azure, or SFTP with dlt can be slow or memory-heavy, and this Skill provides a structured diagnose-fix-measure loop to speed up filesystem extraction pipelines. ## Core Features & Use Cases - Bottleneck Diagnosis: Measures extract time via pipeline.last_trace and identifies whether the issue is slow parsing, out-of-memory reads, sequential file access, or oversized bucket scans. - Targeted Performance Levers: Applies fixes such as faster readers (read_csv_duckdb, read_parquet), chunked streaming, parallelized reads with .parallelize(), narrower file globs, and fsspec-based file copying without parsing. - Use Case: A pipeline reading thousands of CSVs from S3 runs slowly and exhausts memory; the Skill switches to a DuckDB-backed reader with chunking and parallel page reads, then verifies the improvement against the previous trace. ## Quick Start Ask the assistant to optimize your dlt filesystem pipeline that is slow when reading CSV files from S3, mentioning the pipeline name and symptom.

Frequently Asked Questions about optimize-filesystem-performance

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I speed up a slow dlt filesystem pipeline?▼

First measure extract time with pipeline.last_trace to confirm reading files is the bottleneck. Then apply matching levers: use a faster reader like read_csv_duckdb, stream in chunks, parallelize reads across pages, or narrow the file_glob to scan fewer objects.

How to read large CSV files in dlt without running out of memory?▼

Stream the file in chunks instead of loading it whole. Use read_csv with a chunksize parameter, read_csv_duckdb with chunk_size, or write a custom dlt transformer that yields pandas chunks via pd.read_csv(f.open(), chunksize=...).

read_csv vs read_csv_duckdb in dlt, which is faster?▼

read_csv_duckdb is faster and lower-memory than the pandas-based read_csv, and supports use_pyarrow=True for Arrow output. Overall read speed by format is Parquet fastest, then JSONL, then CSV.

Does dlt parallelize file reads from S3?▼

Yes, call .parallelize() on the resource, but it splits reads across pages so files_per_page must be set well below your file count. Parallelization only helps remote object-store reads; local files are CPU and GIL bound.

Why is my dlt pipeline re-reading the whole bucket every run?▼

The pipeline lacks file-level incremental loading, so it scans and reads every object each run. Set up incremental filtering by modification_date first, since reading fewer files beats reading them faster.

When should I skip dlt readers and use fsspec directly?▼

Use fsspec directly when you only need to move or copy files rather than parse their contents. The fsspec_from_resource helper provides an authenticated client for bulk operations, avoiding parse overhead and memory use entirely.