[Feature] Improve scan performance in hot read paths
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Activo
- Stack tecnológico
- cpp
- Área
- performance
Línea de trabajo
Comienza perfilando las llamadas a StructArray::fields() del lector de manifiestos y las llamadas a ArrayBuilder::type() del decodificador Avro en rutas de escaneo concurrentes. Identifica la duración de vida adecuada del batch, reader o builder para los metadatos inmutables de Arrow y, después, verifica que las cachés se invaliden cuando se reemplace el árbol de objetos de Arrow correspondiente. La tarea estará completada cuando se reduzca la sobrecarga de sincronización de shared pointers y del conteo de referencias durante los escaneos concurrentes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Search before asking
- I searched in the issues and found nothing similar.
Motivation
Recent profiling of highly concurrent scans has revealed several performance bottlenecks caused by
repeated operations on Arrow-returned shared_ptr objects in hot read loops.
Two significant cases have been identified:
-
Manifest readers repeatedly call
StructArray::fields()while processing individual rows. This
copiesshared_ptr<Array>objects and, with GCC 8.3's libstdc++, can introduce substantial lock
contention through_Sp_locker,pthread_mutex_lock, and futex waits when multiple workers read
manifests concurrently. -
Avro decoding calls
ArrayBuilder::type()for every integer and timestamp value. Because this
method returnsstd::shared_ptr<DataType>by value, concurrent scans repeatedly modify reference
counts on shared Arrow primitive data types, causing cache-line contention. Profiling showed
ArrayBuilder::type()and shared-pointer release operations accounting for a large proportion of
samples after the manifest bottleneck was removed.
This issue tracks the broader effort to identify and eliminate similar shared-pointer operations
from scan hot paths. The goal is to cache immutable Arrow metadata at an appropriate batch, reader,
or builder lifetime, while ensuring caches are invalidated whenever the corresponding Arrow object
tree is replaced.
The expected outcome is lower synchronization and reference-counting overhead under concurrent
scans, allowing CPU time to return to actual decoding, memory copying, and buffer management.
Solution
No response
Anything else?
No response
Are you willing to submit a PR?
- I'm willing to submit a PR!
- Lenguaje dominante
- C++
- Estrellas
- 65
- Forks
- 29
- Merge medio
- 2 d 30 min
- PR fusionados (30 d)
- 77
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/paimon-cpp
-
enhancement
apache/paimon-cpp#381 · 1 asignado ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
apache/paimon-cpp#375 · 1 asignado ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
apache/paimon-cpp#369 · 1 asignado ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
apache/paimon-cpp#361 · 1 asignado ·
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
apache/paimon-cpp#347 · 1 asignado ·
Todos los issues de apache/paimon-cpp
Issues similares
-
enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
QuantStack/git2cpp#187 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
AXERA-TECH/ax-llm#77 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
games-on-whales/wolf#509 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100