Beispiel #1
0
 def get_affinity(self):
     pHandle = self._get_handle_for_pid()
     try:
         return win32process.GetProcessAffinityMask(pHandle)[0]
     except win32process.error, e:
         print "unable to get the running cpu"
         raise ValueError, e
Beispiel #2
0
    def SetupProcessors(cluster):
        if sys.platform != "win32":
            return

        handle = win32api.GetCurrentProcess()
        processMask,systemMask = win32process.GetProcessAffinityMask(handle)

        ht = False
        if systemMask&8:
            #we're going to count this as a hyperthreaded system
            #as we don't currently have any servers with > 2 physical cpu
            ht = True

        mask = 1
        if cluster == 0:
            if ht:
                mask = 3
            else:
                mask = 1
        elif cluster == 1:
            if ht:
                mask = 12
            else:
                mask = 2

        print "Setting Processor Affinity Mask to",mask
        win32process.SetProcessAffinityMask(handle,mask)
Beispiel #3
0
 def set_process_affinity_mask(pid, value):
     pHandle = _get_handle_for_pid(pid, False)
     current = win32process.GetProcessAffinityMask(pHandle)[0]
     try:
         win32process.SetProcessAffinityMask(pHandle, value)
     except win32process.error, e:
         raise ValueError, e
Beispiel #4
0
 def set_affinity(self, value):
     pHandle = self._get_handle_for_pid(0, False)
     current = win32process.GetProcessAffinityMask(pHandle)[0]
     try:
         win32process.SetProcessAffinityMask(pHandle, current)
     except win32process.error, e:
         print "unable to set process affinity"
         raise ValueError, e
Beispiel #5
0
    def test_cpu_affinity(self):
        def from_bitmask(x):
            return [i for i in range(64) if (1 << i) & x]

        handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION,
                                      win32con.FALSE, self.pid)
        self.addCleanup(win32api.CloseHandle, handle)
        sys_value = from_bitmask(
            win32process.GetProcessAffinityMask(handle)[0])
        psutil_value = psutil.Process(self.pid).cpu_affinity()
        self.assertEqual(psutil_value, sys_value)
Beispiel #6
0
 def set_affinity(pid=0, mask=1):
     try:
         hProc = __open_process(pid, ro=False)
         mask_old, mask_sys_old = win32process.GetProcessAffinityMask(
             hProc)
         res = win32process.SetProcessAffinityMask(hProc, mask)
         win32api.CloseHandle(hProc)
         if res:
             raise OSError
     except win32process.error as e:
         raise ValueError, e
     return mask_old
Beispiel #7
0
 def get_process_affinity_mask(pid):
     pHandle = _get_handle_for_pid(pid)
     try:
         return win32process.GetProcessAffinityMask(pHandle)[0]
     except win32process.error as e:
         raise ValueError(e)
Beispiel #8
0
 def get_affinity_mask(self):
     try:
         return win32process.GetProcessAffinityMask(self.pHandle)[0]
     except win32process.error as e:
         raise ValueError(e)
Beispiel #9
0
 def get_affinity(pid=0):
     hProc = __open_process(pid)
     mask, mask_sys = win32process.GetProcessAffinityMask(hProc)
     win32api.CloseHandle(hProc)
     return mask
Beispiel #10
0
 def sched_getaffinity(pid):
     pid = pid or os.getpid()
     handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION, False, pid)
     return _mask_to_cores(win32process.GetProcessAffinityMask(handle)[0])