Use different resource limit for upload and download connections.

This commit is contained in:
levlam 2022-07-28 17:34:29 +03:00
parent fac6b73999
commit ddbca1bb16
2 changed files with 9 additions and 8 deletions

View File

@ -24,21 +24,22 @@ FileLoadManager::FileLoadManager(ActorShared<Callback> callback, ActorShared<> p
}
void FileLoadManager::start_up() {
if (G()->shared_config().get_option_boolean("is_premium")) {
max_resource_limit_ *= 8;
}
upload_resource_manager_ = create_actor<ResourceManager>("UploadResourceManager", max_resource_limit_,
constexpr int64 MAX_UPLOAD_RESOURCE_LIMIT = 4 << 20;
upload_resource_manager_ = create_actor<ResourceManager>("UploadResourceManager", MAX_UPLOAD_RESOURCE_LIMIT,
!G()->parameters().use_file_db /*tdlib_engine*/
? ResourceManager::Mode::Greedy
: ResourceManager::Mode::Baseline);
if (G()->shared_config().get_option_boolean("is_premium")) {
max_download_resource_limit_ *= 8;
}
}
ActorOwn<ResourceManager> &FileLoadManager::get_download_resource_manager(bool is_small, DcId dc_id) {
auto &actor = is_small ? download_small_resource_manager_map_[dc_id] : download_resource_manager_map_[dc_id];
if (actor.empty()) {
actor = create_actor<ResourceManager>(
PSLICE() << "DownloadResourceManager " << tag("is_small", is_small) << tag("dc_id", dc_id), max_resource_limit_,
ResourceManager::Mode::Baseline);
PSLICE() << "DownloadResourceManager " << tag("is_small", is_small) << tag("dc_id", dc_id),
max_download_resource_limit_, ResourceManager::Mode::Baseline);
}
return actor;
}
@ -185,7 +186,7 @@ void FileLoadManager::update_downloaded_part(QueryId id, int64 offset, int64 lim
if (node == nullptr) {
return;
}
send_closure(node->loader_, &FileLoaderActor::update_downloaded_part, offset, limit, max_resource_limit_);
send_closure(node->loader_, &FileLoaderActor::update_downloaded_part, offset, limit, max_download_resource_limit_);
}
void FileLoadManager::hangup() {

View File

@ -80,7 +80,7 @@ class FileLoadManager final : public Actor {
ActorShared<Callback> callback_;
ActorShared<> parent_;
std::map<QueryId, NodeId> query_id_to_node_id_;
int64 max_resource_limit_ = 1 << 21;
int64 max_download_resource_limit_ = 1 << 21;
bool stop_flag_ = false;
void start_up() final;