Skip to content

Commit 40be4c2

Browse files
authored
feat(BA-430): Improve Performance of vfolder list_host API handler (#3935)
1 parent d572db9 commit 40be4c2

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

changes/3935.feature.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Improve performance of vfolder `list_host()` API handler through task parallel execution.

src/ai/backend/manager/api/vfolder.py

+30-12
Original file line numberDiff line numberDiff line change
@@ -860,24 +860,42 @@ async def list_hosts(request: web.Request, params: Any) -> web.Response:
860860
if default_host not in allowed_hosts:
861861
default_host = None
862862

863+
volumes = [
864+
(proxy_name, volume_data)
865+
for proxy_name, volume_data in all_volumes
866+
if f"{proxy_name}:{volume_data['name']}" in allowed_hosts
867+
]
868+
869+
fetch_exposed_volume_fields_tasks = [
870+
fetch_exposed_volume_fields(
871+
storage_manager=root_ctx.storage_manager,
872+
redis_connection=root_ctx.redis_stat,
873+
proxy_name=proxy_name,
874+
volume_name=volume_data["name"],
875+
)
876+
for proxy_name, volume_data in volumes
877+
]
878+
get_sftp_scaling_groups_tasks = [
879+
root_ctx.storage_manager.get_sftp_scaling_groups(proxy_name)
880+
for proxy_name, volume_data in volumes
881+
]
882+
883+
fetch_exposed_volume_fields_results, get_sftp_scaling_groups_results = await asyncio.gather(
884+
asyncio.gather(*fetch_exposed_volume_fields_tasks),
885+
asyncio.gather(*get_sftp_scaling_groups_tasks),
886+
)
887+
863888
volume_info = {
864889
f"{proxy_name}:{volume_data['name']}": {
865890
"backend": volume_data["backend"],
866891
"capabilities": volume_data["capabilities"],
867-
"usage": await fetch_exposed_volume_fields(
868-
storage_manager=root_ctx.storage_manager,
869-
redis_connection=root_ctx.redis_stat,
870-
proxy_name=proxy_name,
871-
volume_name=volume_data["name"],
872-
),
873-
"sftp_scaling_groups": await root_ctx.storage_manager.get_sftp_scaling_groups(
874-
proxy_name
875-
),
892+
"usage": usage,
893+
"sftp_scaling_groups": sftp_scaling_groups,
876894
}
877-
for proxy_name, volume_data in all_volumes
878-
if f"{proxy_name}:{volume_data['name']}" in allowed_hosts
895+
for (proxy_name, volume_data), usage, sftp_scaling_groups in zip(
896+
volumes, fetch_exposed_volume_fields_results, get_sftp_scaling_groups_results
897+
)
879898
}
880-
881899
resp = {
882900
"default": default_host,
883901
"allowed": sorted(allowed_hosts),

0 commit comments

Comments
 (0)