Skip to content

QUESTION: How to use seastar with heterogeneous workloads? #3160

@masscry

Description

@masscry

Hello!

After some performance testing, I found out that shards in my application have different memory requirements, but require roughly same CPU. It looks like can't redistribute tasks evenly, it will cost a lot in terms of synchronization and passing data around. But, at same time I can't grow seastar memory indefinitely because of rather tight budget.

I have an idea to hack seastar allocator and introduce some "memory groups", to setup at engine startup - thus some dedicated shards get smaller pools, than others. Is it a valid solution? I don't want to maintain a fork, so I'll be very glad if someone can help me with ideas, how to stay on vanilla.

I've been thinking about using multiple app_templates, but as I understand there are some thread locals and other static global entities in framework, thus second app won't work as for now.

Also, with multiple apps, I will lose native ways of interaction between shards, which is also bad.

So, thank you in advance for your help.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions