
    &`i#                         d dl Z d dlmZmZ d dlmc mZ d dlm	Z	 d dl
mZ d dlmZmZ  e j        e          Z G d d          Z G d d	          ZdS )
    N)ListOptional)get_or_create_event_loop)(parse_pg_formatted_resources_to_original)async_loop_forevercompose_state_messagec                   *    e Zd Zi Zi Zi Zi Zi Zi Zi Z	dS )
DataSourceN)
__name__
__module____qualname__
node_statsnode_physical_statsactorsnodesnode_workersnode_actorscore_worker_stats     y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/dashboard/modules/node/datacenter.pyr
   r
      s9         J FELKr   r
   c                   D   e Zd Ze eej                  d                         Ze eej	                  d                         Z
ed             Zedd            Zed             Zeddeee                  fd	            Zed
ee         dee         fd            ZdS )DataOrganizerc                  f  K   d t           j                                        D             } t           j                                        | z
  D ]!}t           j                            |           "t           j                                        | z
  D ]!}t           j                            |           "d S )Nc                 0    h | ]\  }}|d          dk    |S )stateALIVEr   ).0node_id	node_infos      r   	<setcomp>z&DataOrganizer.purge.<locals>.<setcomp>/   s6     
 
 
"!W,, ,,,r   )r
   r   itemsr   keyspopr   )alive_nodeskeys     r   purgezDataOrganizer.purge'   s      
 
&0&6&<&<&>&>
 
 

 (--//+= 	+ 	+C!%%c****16688;F 	4 	4C*..s3333	4 	4r   c                   K   t                      }i }i }t          t          j                                                  D ]}t          j                            |i           }t          j                            |i           }|                    || j	        ||           d{V }|D ](}	|	                    dg           D ]}
|
d         }|
||<   )|||<   |t          _
        |t          _        dS )ah  
        Organizes data: read from (node_physical_stats, node_stats) and updates
        (node_workers, node_worker_stats).

        This methods is not really async, but DataSource is not thread safe so we need
        to make sure it's on the main event loop thread. To avoid blocking the main
        event loop, we yield after each node processed.
        NcoreWorkerStatsworkerId)r   listr
   r   r#   r   getr   run_in_executor_extract_workers_for_noder   r   )clsthread_pool_executorloopr   r   r   r   r   workersworkerstats	worker_ids               r   organizezDataOrganizer.organize:   s,      ())
 J,113344 	, 	,G","@"D"DWb"Q"Q#.227B??J !00$-#	       G " 9 9#ZZ(92>> 9 9E %j 1I38%i009 %,L!!".
'8
$$$r   c                    g }i }i }i }|                     dg           D ]%}|d         }|||<   |d         ||<   |d         ||<   &|                     dg           D ]}	t          |	          }	|	d         }|                     |          }|r|gng |	d<   |                     |t          j                  |	d<   |                     |t          j                  |	d<   |                    |	           |S )NcoreWorkersStatspidlanguagejobIdr2   r)   )r,   dictdashboard_constsDEFAULT_LANGUAGEDEFAULT_JOB_IDappend)
r/   r   r   r2   pid_to_worker_statspid_to_languagepid_to_job_idr   r9   r3   s
             r   r.   z'DataOrganizer._extract_workers_for_nodec   s)    !+0BB!G!G 	< 	<#E*C'8$#4Z#@OC !27!;M#)--i<< 	# 	#F&\\F-C 3 7 7 < <?P(X):(;(;VXF$%!0!4!4%6" "F: ,//5E5TUUF7ONN6""""r   Fc                 P  K   t          t          j                            |i                     }t          t          j                            |i                     }t          j                            |i           }|r-|                    dd            |                    dd            n|                    dd            |                    di           }t          |                    dd                    }t          |                    dd                    }|||z
  d}	|}
||
d	<   |
d	                             |	           |
d	                             |           |                    d
i           }t          |                    dd           |                    dd                     |
d	         d<   |sjt          j
                            |i           }d |                                D              d {V |
d<   t          j                            |g           |
d<   |
S )Nr2   workersStatsr8   
storeStatsobjectStoreBytesUsedr   objectStoreBytesAvail)object_store_used_memoryobject_store_available_memoryraylet	deathInforeasonreasonMessagestateMessagec                 Z   K   i | ]&\  }}|t                               |           d {V 'S Nr   _get_actor_infor   actor_idactor_table_entrys      r   
<dictcomp>z/DataOrganizer.get_node_info.<locals>.<dictcomp>   sT       # # #/H/  = =>O P PPPPPPP# # #r   r   )r<   r
   r   r,   r   r   r$   intupdater   r   r"   r   )r/   r   get_summaryr   r   nodestore_statsusedtotal	ray_statsr    
death_infoactor_table_entriess                r   get_node_infozDataOrganizer.get_node_info   s2     ":#A#E#Egr#R#RSS*/33GR@@AA
##GR00 	5##It444NN>40000NN-t444 nn\266;??#91==>>KOO$;Q??@@(,-2T\
 
	
 (	(	((""9--- 	(""4(((XXk2..
.CNN8T**JNN?D,Q,Q/
 /
	(N+  
	L","8"<"<Wb"I"I# #3F3L3L3N3N# # # # # # # # #Ih $.#:#>#>w#K#KIi r   c                 b   K   d t           j                                        D              d {V S )Nc                 V   K   g | ]$}t                               |d            d{V %S )T)rZ   N)r   rb   )r   r   s     r   
<listcomp>z6DataOrganizer.get_all_node_summary.<locals>.<listcomp>   sS       
 
 
   --g4-HHHHHHHH
 
 
r   )r
   r   r#   )r/   s    r   get_all_node_summaryz"DataOrganizer.get_all_node_summary   sV      
 
 &+0022	
 
 
 
 
 
 
 
 
 	
r   N	actor_idsc                    K   |d |D             }nt           j        }d |                                D              d {V S )Nc                 N    i | ]"}|t           j                            |          #S r   )r
   r   r,   )r   rU   s     r   rW   z1DataOrganizer.get_actor_infos.<locals>.<dictcomp>   s8     * * *>F*+//99* * *r   c                 Z   K   i | ]&\  }}|t                               |           d {V 'S rQ   rR   rT   s      r   rW   z1DataOrganizer.get_actor_infos.<locals>.<dictcomp>   sT       
 
 
++ M99:KLLLLLLLL
 
 
r   )r
   r   r"   )r/   rg   target_actor_table_entriess      r   get_actor_infoszDataOrganizer.get_actor_infos   s        * *JS* * *&& *4):&
 
/I/O/O/Q/Q
 
 
 
 
 
 
 
 
 	
r   actorreturnc                   K   | d S |                                  } | d         d         }t          j                            |i           }|                     |           | d         d         }|                    d          }t          j                            |i           }d }g }|r|                    dg           D ]}|d         |k    r|} n|                    dg           D ]?}	|	                    d          pg D ]%}
|
d         |k    r|                    |	            n&@|| d<   || d<   |                    d	g           | d	<   t          | d
                   }|| d
<   | S )Naddressr*   nodeIdr9   r2   gpusprocessesPidsprocessStatsmemrequiredResources)copyr
   r   r,   rY   r   r@   r   )rm   r5   r   r   r9   r   actor_process_statsactor_process_gpu_statsprocess_stats	gpu_statsprocessrequired_resourcess               r   rS   zDataOrganizer._get_actor_info   s     =4

)$Z0	&8<<YKK&''' 	"8,##E**(<@@"MM""$ 	!4!8!8B!G!G   '3..*7'E / 144VR@@  	  )}}_==C  Gu~,,/66yAAA - 0f 3n*..ub99eE%&
 
 &8!"r   )FrQ   )r   r   r   staticmethodr   r=   $RAY_DASHBOARD_STATS_PURGING_INTERVALr'   classmethod%RAY_DASHBOARD_STATS_UPDATING_INTERVALr6   r.   rb   rf   r   r   strrl   r<   rS   r   r   r   r   r   &   sA       (MNN4 4 ON \4" (NOO%9 %9 PO [%9N   [< + + + [+Z 
 
 [
 
 
htCy.A 
 
 
 [
 'Xd^ ' ' ' ' \' ' 'r   r   )loggingtypingr   r   ray.dashboard.consts	dashboardconstsr=   ray._common.utilsr   ray._private.utilsr   ray.dashboard.utilsr   r   	getLoggerr   loggerr
   r   r   r   r   <module>r      s    ! ! ! ! ! ! ! ! / / / / / / / / /                 
 
	8	$	$       &J J J J J J J J J Jr   