-
Notifications
You must be signed in to change notification settings - Fork 25.8k
Expand and consolidate infrastructure to better support native code #139057
Copy link
Copy link
Open
Labels
:Delivery/ToolingDeveloper tooliing and automationDeveloper tooliing and automation:PerformanceAll issues related to Elasticsearch performance including regressions and investigationsAll issues related to Elasticsearch performance including regressions and investigations:Search Relevance/VectorsVector searchVector searchTeam:DeliveryMeta label for Delivery teamMeta label for Delivery teamTeam:PerformanceMeta label for performance teamMeta label for performance teamTeam:Search RelevanceMeta label for the Search Relevance team in ElasticsearchMeta label for the Search Relevance team in Elasticsearch
Metadata
Metadata
Assignees
Labels
:Delivery/ToolingDeveloper tooliing and automationDeveloper tooliing and automation:PerformanceAll issues related to Elasticsearch performance including regressions and investigationsAll issues related to Elasticsearch performance including regressions and investigations:Search Relevance/VectorsVector searchVector searchTeam:DeliveryMeta label for Delivery teamMeta label for Delivery teamTeam:PerformanceMeta label for performance teamMeta label for performance teamTeam:Search RelevanceMeta label for the Search Relevance team in ElasticsearchMeta label for the Search Relevance team in Elasticsearch
Type
Fields
Give feedbackNo fields configured for issues without a type.
Native code has been identified as one major tool to enhance performance in critical parts of Elasticsearch.
Elasticsearch provides extensive tools and support for quality assurance of Java code; we need to have something similar to support compilation, testing, benchmarking, performance tuning, packaging and distribution of native code.
Some things are more complicated when dealing with native code: Java can be compiled and run anywhere, with the expectation that it will behave similarly (or close enough) across all supported platforms and processors. For native code, things like compilation and packaging are need to be created for all platforms we support; moreover, things like testing and benchmarking need to run across multiple processors, across multiple vendors of the same architecture and across multiple generations of the same architecture (e.g. AMD with AVX2 support, Intel with AVX-512 support, Graviton with Neon support, etc.).
We have already something in place: our native library can be compiled across all platforms (OS + architecture) on a single Mac, using docker, but it's a very manual process (you need to compile, test, benchmark across multiple platforms, juggling multiple cloud instances, then you can compile and upload the final binaries). We need to expand and improve this tooling.