src/Pure/Concurrent/multithreading.scala
changeset 79758 68f2fe632b4c
parent 79650 65ef68bab8d6
child 79759 5492439ffe89
equal deleted inserted replaced
79757:f20ac6788faa 79758:68f2fe632b4c
    21     }
    21     }
    22     else {
    22     else {
    23       val Physical = """^\s*physical id\s*:\s*(\d+)\s*$""".r
    23       val Physical = """^\s*physical id\s*:\s*(\d+)\s*$""".r
    24       val Cores = """^\s*cpu cores\s*:\s*(\d+)\s*$""".r
    24       val Cores = """^\s*cpu cores\s*:\s*(\d+)\s*$""".r
    25 
    25 
    26       var physical: Option[Int] = None
    26       val physical_cores: Int = {
    27       var physical_cores = Map.empty[Int, Int]
    27         var physical: Option[Int] = None
       
    28         var cores = Map.empty[Int, Int]
    28 
    29 
    29       val result = ssh.execute("cat /proc/cpuinfo").check
    30         val result = ssh.execute("cat /proc/cpuinfo").check
    30       for (line <- Library.trim_split_lines(result.out)) {
    31         for (line <- Library.trim_split_lines(result.out)) {
    31         line match {
    32           line match {
    32           case Physical(Value.Int(i)) => physical = Some(i)
    33             case Physical(Value.Int(i)) => physical = Some(i)
    33           case Cores(Value.Int(i))
    34             case Cores(Value.Int(i))
    34             if physical.isDefined && !physical_cores.isDefinedAt(physical.get) =>
    35               if physical.isDefined && !cores.isDefinedAt(physical.get) =>
    35             physical_cores = physical_cores + (physical.get -> i)
    36               cores = cores + (physical.get -> i)
    36           case _ =>
    37             case _ =>
       
    38           }
    37         }
    39         }
       
    40         cores.valuesIterator.sum
    38       }
    41       }
    39       physical_cores.valuesIterator.sum max 1
    42       if (physical_cores > 1) physical_cores else 1
    40     }
    43     }
    41 
    44 
    42 
    45 
    43   /* max_threads */
    46   /* max_threads */
    44 
    47