perf: address scheduler crash on high partition SF data#1875
perf: address scheduler crash on high partition SF data#1875coderfender wants to merge 5 commits into
Conversation
9af6cff to
90af60d
Compare
|
@milenkovicm please take a look whenever you get a chance |
|
thanks @coderfender will have a look |
milenkovicm
left a comment
There was a problem hiding this comment.
thanks @coderfender, i guess we have two goals with this effort
- reduce number of executor metadata instances keept in memory (we do not need to have exact one instance, but it would ne good not to have instance per partition location)
- reduce serialised payload as we're hitting gprc threshoulds with many partitions
| })? | ||
| .into(), | ||
| })?; | ||
| Arc::new(PartitionLocationMetadata { |
There was a problem hiding this comment.
my idea was to have single instance of partition location and then Arc-ed behind shared pointers. At the moment, we have instance of executor metadata per partition location which for scenarios where we have just a few executor and many partitions may produce a lot of data (id, host ...). also when serialised we would serialize executor metadata for each of partition, which is hitting gprc issues. not sure if we can somehow reduce executor metadata instance count and its serialization
There was a problem hiding this comment.
Would it be okay to create a followup PR to handle the second part and port all common info in ShuffleReaderExec proto level and not PartitionLocation ?
|
i think #1853 does that already if im not mistaken |
|
Yeah we had a chat in the original PR . I am okay to merge that PR ahead if that makes more sense this one. Although I think mine is a little bit different in terms of code paths changes |
|
Closing this PR in favor of #1853 |
Which issue does this PR close?
Closes #1851
Rationale for this change
We currently have more than what is needed in PartitionMetadata causing scheduler OOM on high cardinality data
What changes are included in this PR?
Implement PartitionLocation a lean, address-only struct instead of the full metadata:
that maps an executor to its location address.
partition_to_location call) share one allocation rather than N copies.
the serialized payload sent to executors/clients. (no contract changes per say)
Are there any user-facing changes?
No
No