Ignore:
Timestamp:
01/25/23 16:59:46 (17 months ago)
Author:
ymipsl
Message:

Merge XIOS_FILE_SERVICE dev branch into trunk

YM

Location:
XIOS3/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS3/trunk

  • XIOS3/trunk/src/manager/ressources_manager.cpp

    r2260 r2458  
    22#include "server.hpp" 
    33#include "servers_ressource.hpp" 
     4#include "token_manager.hpp" 
    45#include "timer.hpp" 
    56 
     
    2122    if (commRank==0 && isXiosServer) MPI_Comm_rank(xiosComm_, &commRank) ;  
    2223    else commRank=0 ; 
     24    tokenManager_ = new CTokenManager(xiosComm_,commRank) ; 
     25 
    2326    MPI_Allreduce(&commRank, &managerGlobalLeader_, 1, MPI_INT, MPI_SUM, xiosComm_) ; 
    2427 
     
    163166    buffer.realloc(maxBufferSize_) ; 
    164167     
    165     buffer<<serverLeader_ ;   
     168    buffer<<ressourcesSize_<<freeRessourcesSize_<<serverLeader_ ;   
    166169    buffer<<(int) pools_.size(); 
    167170    for(auto it=pools_.begin();it!=pools_.end(); ++it) 
     
    169172      auto key = it->first ; 
    170173      auto val = it->second ;  
    171       buffer << key<<std::get<0>(val) << std::get<1>(val)  ; 
     174      buffer << key<<std::get<0>(val)  << std::get<1>(val)  << std::get<2>(val); 
    172175    } 
    173176  } 
     
    177180    std::string poolId ; 
    178181    int size ; 
     182    int freeSize ; 
    179183    int leader ; 
    180184    
    181     buffer>>serverLeader_ ; 
     185    buffer>>ressourcesSize_>>freeRessourcesSize_>>serverLeader_ ; 
    182186    pools_.clear() ; 
    183187    int nbPools ; 
     
    185189    for(int i=0;i<nbPools;i++)  
    186190    { 
    187       buffer>>poolId>>size>>leader ; 
    188       pools_[poolId]=std::make_tuple(size,leader) ; 
     191      buffer>>poolId>>size>>freeSize>>leader ; 
     192      pools_[poolId]=std::make_tuple(size, freeSize, leader) ; 
    189193    } 
    190194  } 
     
    210214 
    211215  
    212   void CRessourcesManager::registerPool(const string& poolId, int size, int leader) 
    213   { 
    214     winRessources_->lockWindow(managerGlobalLeader_,0) ; 
    215     winRessources_->updateFromWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpIn) ; 
    216     pools_[poolId] = make_tuple(size,leader) ; 
     216  void CRessourcesManager::registerPoolClient(const string& poolId, int size, int leader) 
     217  { 
     218    winRessources_->lockWindow(managerGlobalLeader_,0) ; 
     219    winRessources_->updateFromWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpIn) ; 
     220    pools_[poolId] = make_tuple(size, size, leader) ; 
     221    winRessources_->updateToWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpOut) ; 
     222    winRessources_->unlockWindow(managerGlobalLeader_,0) ;     
     223  } 
     224 
     225  void CRessourcesManager::registerPoolServer(const string& poolId, int size, int leader) 
     226  { 
     227    winRessources_->lockWindow(managerGlobalLeader_,0) ; 
     228    winRessources_->updateFromWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpIn) ; 
     229    pools_[poolId] = make_tuple(size, size, leader) ; 
    217230    freeRessourcesSize_-=size ; 
    218231    winRessources_->updateToWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpOut) ; 
     
    220233  } 
    221234 
    222  
    223   bool CRessourcesManager::getPoolInfo(const string& poolId, int& size, int& leader) 
     235  bool CRessourcesManager::getPoolInfo(const string& poolId, int& size, int& freeSize, int& leader) 
    224236  { 
    225237    winRessources_->lockWindow(managerGlobalLeader_,0) ; 
     
    232244    { 
    233245      size=get<0>(it->second) ; 
    234       leader=get<1>(it->second) ; 
     246      freeSize=get<1>(it->second) ; 
     247      leader=get<2>(it->second) ; 
    235248      return true ; 
    236249    } 
     250  } 
     251 
     252  bool CRessourcesManager::decreasePoolFreeSize(const string& poolId, int size) 
     253  { 
     254    bool ret ; 
     255 
     256    winRessources_->lockWindow(managerGlobalLeader_,0) ; 
     257    winRessources_->updateFromWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpIn) ; 
     258    
     259 
     260    auto it=pools_.find(poolId) ; 
     261     
     262    if ( it == pools_.end()) ret=false ; 
     263    else  
     264    { 
     265      get<1>(it->second)-=size ; 
     266      ret=true ; 
     267    } 
     268    winRessources_->updateToWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpOut) ; 
     269    winRessources_->unlockWindow(managerGlobalLeader_,0) ;  
     270 
     271    return ret ;    
    237272  } 
    238273 
     
    257292  bool CRessourcesManager::getPoolLeader(const string& poolId, int& leader) 
    258293  { 
    259     int size ; 
    260     return getPoolInfo(poolId, size, leader) ; 
     294    int size, freeSize ; 
     295    return getPoolInfo(poolId, size, freeSize, leader) ; 
    261296  } 
    262297 
    263298  bool CRessourcesManager::getPoolSize(const string& poolId, int& size) 
    264299  { 
    265     int leader ; 
    266     return getPoolInfo(poolId, size, leader) ; 
     300    int leader,freeSize ; 
     301    return getPoolInfo(poolId, size, freeSize, leader) ; 
     302  } 
     303 
     304  bool CRessourcesManager::getPoolFreeSize(const string& poolId, int& freeSize) 
     305  { 
     306    int leader,size ; 
     307    return getPoolInfo(poolId, size, freeSize, leader) ; 
    267308  } 
    268309 
    269310  bool CRessourcesManager::hasPool(const string& poolId) 
    270311  { 
    271     int leader,size ; 
    272     return getPoolInfo(poolId, size, leader) ; 
     312    int leader,size,freeSize ; 
     313    return getPoolInfo(poolId, size, freeSize, leader) ; 
     314  } 
     315 
     316  void CRessourcesManager::waitPoolRegistration(const string& poolId) 
     317  { 
     318    while(!hasPool(poolId)) CXios::getDaemonsManager()->servicesEventLoop() ; 
    273319  } 
    274320} 
Note: See TracChangeset for help on using the changeset viewer.