MemoryManagement.py 文件源码

python
阅读 19 收藏 0 点赞 0 评论 0

项目:CellsCycle 作者: AQuadroTeam 项目源码 文件源码
def _memoryMetricatorThread(logger, cache, settings, master, timing):
    if master:
        period = settings.getScalePeriod()

        setScaleDownLevel   = settings.getSetScaleDownLevel()   if settings.getSetScaleDownLevel()  >0 else -float("inf")
        setScaleUpLevel     = settings.getSetScaleUpLevel()     if settings.getSetScaleUpLevel()    >0 else  float("inf")
        getScaleDownLevel   = settings.getGetScaleDownLevel()   if settings.getGetScaleDownLevel()  >0 else -float("inf")
        getScaleUpLevel     = settings.getGetScaleUpLevel()     if settings.getGetScaleUpLevel()    >0 else  float("inf")

        logger.debug("Metricator alive, period: "+ str(period) +"s, getThrLevel: [" +str(getScaleDownLevel) +"," + str(getScaleUpLevel)+ "], setThrLevel: [" + str(setScaleDownLevel) + "," + str(setScaleUpLevel) + "]"  )

        # this channel is necessary to send scale up/down requests
        internal_channel = InternalChannel(addr='127.0.0.1', port=settings.getIntPort(), logger=logger)
        internal_channel.generate_internal_channel_client_side()
        from random import gauss
        sleep(60)
        while True:

            sleep(abs(gauss(period, period/10)))
            locked = timing["setters"][0].isTransferring()
            setMean = 1.0 - timing["setters"][0].calcMean()
            getMean = 0.0
            for metr in timing["getters"]:
                getMean += 1.0 - metr.calcMean()
            getMean = getMean / settings.getGetterThreadNumber()

            logger.debug("Working time for setters: " + str(setMean) + ", getters (mean): " + str(getMean) )

            # scale up needed
            if getMean >= getScaleUpLevel or setMean >= setScaleUpLevel and not locked:

                logger.debug("Requests for scale Up!")
                # call scale up service
                ListThread.notify_scale_up(internal_channel)
                # self.list_communication_thread.notify_scale_up()

            # scale down needed
            elif getMean <= getScaleDownLevel and setMean <= setScaleDownLevel and not locked:

                logger.debug("Requests for scale Down!")
                # call scale down service
                ListThread.notify_scale_down(internal_channel)
                # self.list_communication_thread.notify_scale_down()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号