home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / c / condor40.zip / CONDOR / doc / tech / tech.grn < prev    next >
Text File  |  1989-10-16  |  42KB  |  1,869 lines

  1. .nr si 3n
  2. .he 'CONDOR TECHNICAL SUMMARY''%'
  3. .+c
  4. .(l C
  5. .sz 14
  6. CONDOR TECHNICAL SUMMARY
  7. .)l
  8. .(l C
  9. Allan Bricker
  10. and
  11. Michael J. Litzkow
  12. .)l
  13. .sp .5i
  14. .sh 1 "Introduction to the Problem"
  15. .pp
  16. A common computing environment consists of many workstations
  17. connected together by a high speed local area network.
  18. These workstations have grown in power over the past several years,
  19. and if viewed as an aggregate they can represent a
  20. significant computing resource.
  21. However in many cases even though these workstations are
  22. owned by a single organization, they are dedicated to the
  23. exclusive use of individuals.
  24. .pp
  25. In examining the usage patterns of the workstations,
  26. we find it useful to identify three
  27. .q typical
  28. types of users.
  29. .q "Type 1"
  30. users are individuals who mostly use their workstations
  31. for sending and receiving mail or preparing papers.
  32. Theoreticians and administrative people often fall into this
  33. category.
  34. We identify many software development people as
  35. .q "type 2"
  36. users.
  37. These people are frequently involved in the debugging cycle where
  38. they edit software, compile, then run it possibly using some kind
  39. of debugger.
  40. This cycle is repeated many times during a typical working day.
  41. Type 2 users sometimes have too much computing capacity on their
  42. workstations such as when editing, but then during the compilation
  43. and debugging phases they could often use more CPU power.
  44. Finally there are
  45. .q "type 3"
  46. users.
  47. These are people who frequently do large numbers of simulations,
  48. or combinitoric searches.
  49. These people are almost never happy with just a workstation, because it
  50. really isn't powerful enough to meet their needs.
  51. Another point is that most type 1 and type 2 users leave their machines
  52. completely idle when they are not working, while type 3 users
  53. may keep their machines busy 24 hours a day.
  54. .pp
  55. .i Condor
  56. is an attempt to make use of the idle cycles from type 1 and 2 users
  57. to help satisfy the needs of the type 3 users.
  58. The
  59. .i condor
  60. software monitors the activity on all the
  61. participating workstations in the local network.
  62. Those machines which are determined to be idle, are placed into
  63. a resource pool or
  64. .q "processor bank" .
  65. Machines are then allocated from the bank for the execution of jobs
  66. belonging to the type 3 users.
  67. The bank is a dynamic entity;
  68. workstations enter the bank when they become idle,
  69. and leave again when they get busy.
  70. .sh 1 "Design Features"
  71. .np
  72. No special programming is required to
  73. use condor.
  74. Condor is able to run normal UNIX\**
  75. .(f
  76. \**UNIX is a trademark of AT&T.
  77. .)f
  78. programs, only requiring the user to relink, not recompile
  79. them or change any code.
  80. .np
  81. The local execution environment is preserved for remotely
  82. executing processes.
  83. Users do not have to worry about moving data files to remote
  84. workstations before executing programs there.
  85. .np
  86. The condor software is responsible for locating and allocating
  87. idle workstations.
  88. Condor users do not have to search for idle machines,
  89. nor are they restricted to using machines only during a static portion
  90. of the day.
  91. .np
  92. .q Owners
  93. of workstations have complete priority over their own machines.
  94. Workstation owners are generally happy to let somebody else compute on
  95. their machines while they are out,
  96. but they want their machines back promptly upon returning,
  97. and they don't want to have to take special action to regain control.
  98. Condor handles this automatically.
  99. .np
  100. Users of condor may be assured that their jobs will eventually complete.
  101. If a user submits a job to condor which runs on somebody else's workstation,
  102. but the job is not finished when the workstation owner returns,
  103. the job will be checkpointed and restarted as soon as possible
  104. on another machine.
  105. .np
  106. Measures have been taken to assure
  107. owners of workstations that their filesystems will
  108. not be touched by remotely executing jobs.
  109. .np
  110. Condor does its work completely outside the kernel, and is compatible
  111. with Berkeley 4.2 and 4.3 UNIX kernels and many of their derivitives.
  112. You do not have to run a custom operating system to get the benefits
  113. of condor.
  114. .sh 1 "Limitations"
  115. .np
  116. Only single process jobs are supported, i.e.
  117. the fork(2), exec(2), and similar calls are not implemented.
  118. .np
  119. Signals and signal handlers are not supported, i.e.
  120. the signal(3), sigvec(2), and kill(2) calls are not implemented.
  121. .np
  122. Interprocess communication (IPC) calls are not supported, i.e.
  123. the socket(2), send(2), recv(2), and similar calls are not implemented.
  124. .np
  125. All file operations must be idempotent \(em
  126. read-only and write-only file accesses work correctly,
  127. but programs which both read and write the same file may not.
  128. .np
  129. Each condor job has an associated
  130. .q "checkpoint file"
  131. which is approximately the size of the address space of the process.
  132. Disk space
  133. .b must
  134. be available to store the checkpoint file
  135. .b both
  136. on the
  137. .b submitting
  138. and
  139. .b remote
  140. machines.
  141. .np
  142. Condor does a significant amount of work to prevent security hazards,
  143. but some loopholes are known to exist.
  144. One problem is that condor user jobs are supposed to do only remote system
  145. calls, but this is impossible to guarantee.
  146. User programs are restricted on the remote machine both by running only
  147. as an ordinary user (condor), and by operating in a changeroot'd
  148. directory.
  149. Still a sufficiently malicious and clever user could cause problems by
  150. doing local system calls on the remote machine.
  151. .np
  152. A different security problem exists for owners of condor jobs who necessarily
  153. give remotely running processes access to their own file system.
  154. The risk can be greatly reduced by requesting that access only be granted
  155. to a changeroot'd directory in the local file system, but that does
  156. reduce the flexibility of file access for the condor jobs.
  157. See condor(1) for details on how to submit jobs with such a request.
  158. .sh 1 "Overview of Condor Software"
  159. .pp
  160. Condor user programs do
  161. .q  "remote system calls"
  162. back to the machine from which they were submitted.
  163. Remote system calls provide user
  164. programs with the illusion that they are operating in the
  165. local environment and give the user the flexibility of running
  166. programs written for the normal UNIX environment on condor.
  167. Programs are converted to using
  168. remote system calls simply by relinking with a special library.
  169. The remote system call mechanism is described in Section 6.
  170. .pp
  171. Condor user programs are constructed in such a way that they
  172. can be checkpointed and restarted at will.
  173. This assures users that their jobs will complete, even if they are
  174. interrupted during execution by the return of a hosting workstation's
  175. owner.
  176. Checkpointing is also implemented by linking with the special library.
  177. The checkpointing mechanism is described more fully in Section 7.
  178. .pp
  179. Condor includes
  180. control software consisting of two daemons which run on each
  181. member of the condor pool, and two other daemons which run on a
  182. single machine called the
  183. .b "central manager" .
  184. This software automatically locates and releases
  185. .q "target machines"
  186. and manages the queue of jobs waiting for condor resources.
  187. The control software is described in Section 8.
  188. .sh 1 "Remote System Calls"
  189. .pp
  190. To better understand how the condor remote system calls work,
  191. it is appropriate to quickly review how normal UNIX system
  192. calls work.
  193. Figure 1 illustrates the normal UNIX system call mechanism.
  194. The user program is linked with a standard library called the
  195. .q "C library" .
  196. This is true even for programs written in languages other than C.
  197. The C library contains routines, often referred to as
  198. .q "system call stubs" ,
  199. which cause the actual system calls to happen.
  200. What the stubs really do is push the system call number, and
  201. system call arguments onto the stack, then execute an instruction
  202. which causes a trap to the kernel.
  203. When the kernel trap handler is called, it reads the system call number
  204. and arguments, and performs the system call on behalf of the user
  205. program.
  206. The trap handler will then place the system call return value in a well
  207. known register or registers, and return control to the user program.
  208. The system call stub then returns the result to the calling process,
  209. completing the system call.
  210. .(b
  211. .br
  212. .nr g1 960u
  213. .nr g2 1440u
  214. .GS C
  215. .nr g3 \n(.f
  216. .nr g4 \n(.s
  217. \0
  218. .sp -1
  219. .ft R
  220. .ps 8
  221. .nr g8 \n(.d
  222. .ds g9 "C Library
  223. .sp 360u
  224. \h'480u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  225. .sp |\n(g8u
  226. .ft R
  227. .ps 8
  228. .nr g8 \n(.d
  229. .ds g9 "User Program
  230. .sp 120u
  231. \h'480u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  232. .sp |\n(g8u
  233. .ft R
  234. .ps 8
  235. .nr g8 \n(.d
  236. .ds g9 "(Trap to Kernel)
  237. .sp 480u
  238. \h'480u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  239. .sp |\n(g8u
  240. .ft R
  241. .ps 8
  242. .nr g8 \n(.d
  243. .ds g9 "Kernel
  244. .sp 720u
  245. \h'480u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  246. .sp |\n(g8u
  247. .ft R
  248. .ps 8
  249. .nr g8 \n(.d
  250. .ds g9 "Kernel Services
  251. .sp 1080u
  252. \h'120u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  253. .sp |\n(g8u
  254. .ft R
  255. .ps 8
  256. .nr g8 \n(.d
  257. .ds g9 "e.g. File System
  258. .sp 1200u
  259. \h'120u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  260. .sp |\n(g8u
  261. \D't 1u'
  262. .sp -1
  263. \D'l 0u 840u'\D'l 960u 0u'\D'l 0u -840u'\D'l -960u 0u'
  264. .sp -1
  265. .sp 240u
  266. \D'l 0u 0u'\D'l 960u 0u'\D'l 0u 0u'\D'l -960u 0u'
  267. .sp -1
  268. \D'l 960u 0u'
  269. .sp -1
  270. .sp 360u
  271. \D'l 960u 0u'
  272. .sp -1
  273. .sp 240u
  274. \h'360u'\D'l -240u 180u'
  275. .sp -1
  276. \h'480u'\D'l -240u 180u'
  277. .sp -1
  278. .sp 180u
  279. \h'120u'\D'l 16u -41u'\D'l 2u 27u'\D'l 25u 9u'\D'l -43u 5u'
  280. .sp -1
  281. .sp -180u
  282. \h'480u'\D'l -17u 41u'\D'l -2u -27u'\D'l -25u -9u'\D'l 44u -5u'
  283. .sp -1
  284. .ft R
  285. .ps 8
  286. .nr g8 \n(.d
  287. .ds g9 "Figure 1: Normal UNIX System Calls
  288. .sp 600u
  289. \h'480u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  290. .sp |\n(g8u
  291. .sp 600u
  292. \D't -1u'\D's -1u'
  293. .br
  294. .ft \n(g3
  295. .ps \n(g4
  296. .GE
  297. .)b
  298. .pp
  299. Figure 2 illustrates how this mechanism has been altered by condor
  300. to implement remote system calls.
  301. Whenever condor is executing a user program remotely, it also runs a
  302. .q shadow
  303. program on the initiating host.
  304. The
  305. .b shadow
  306. acts an agent for the remotely executing program in doing
  307. system calls.
  308. Condor user programs are linked with a special version of the C
  309. library.
  310. The special version contains all of the functions provided by the normal
  311. C library, but the system call stubs have been changed to accomplish
  312. remote system calls.
  313. The remote system call stubs package up the system call number and
  314. arguments and send them to the
  315. .b shadow
  316. using the network.
  317. The
  318. .b shadow ,
  319. which is linked with the normal C library, then executes
  320. the system call on behalf of the remotely running job in the normal
  321. way.
  322. The
  323. .b shadow
  324. then packages up the results of the system call and sends them
  325. back to the system call stub in the special C library on the remote
  326. machine.
  327. The remote system call stub then returns its result to the calling procedure
  328. which is unaware that the call was done remotely rather than locally.
  329. Note that the
  330. .b shadow
  331. runs with its UID set to the owner of the remotely
  332. running job so that it has the correct permissions into the local
  333. file system, and the remotely running job runs with its UID set to
  334. .q condor.
  335. Condor is an ordinary user on the remote system, and thus has no special
  336. privileges into that file system.
  337. The remotely running user program runs in a 
  338. .q changeroot'd
  339. environment to further protect the owner of the remote machine from
  340. unwanted file system accesses by the foreign job it is hosting.
  341. .(b
  342. .br
  343. .nr g1 3111u
  344. .nr g2 1727u
  345. .GS C
  346. .nr g3 \n(.f
  347. .nr g4 \n(.s
  348. \0
  349. .sp -1
  350. \D't 1u'
  351. .sp -1
  352. .sp 777u
  353. \h'2117u'\D'l -31u 7u'\D'l 16u -12u'\D'l -5u -19u'\D'l 20u 24u'
  354. .sp -1
  355. .sp -345u
  356. \h'1080u'\D'l 1037u 345u'
  357. .sp -1
  358. .sp -87u
  359. \h'1080u'\D'l 31u -7u'\D'l -15u 12u'\D'l 5u 19u'\D'l -21u -24u'
  360. .sp -1
  361. \h'1080u'\D'l 1037u 346u'
  362. .sp -1
  363. .sp 260u
  364. \h'2160u'\D'l 691u 0u'
  365. .sp -1
  366. .sp -346u
  367. \h'2160u'\D'l 0u 604u'\D'l 691u 0u'\D'l 0u -604u'\D'l -691u 0u'
  368. .sp -1
  369. .sp 647u
  370. \h'821u'\D'l -8u 30u'\D'l -3u -19u'\D'l -19u -3u'\D'l 30u -8u'
  371. .sp -1
  372. .sp 129u
  373. \h'605u'\D'l 8u -30u'\D'l 4u 19u'\D'l 19u 4u'\D'l -31u 7u'
  374. .sp -1
  375. .ft R
  376. .ps 8
  377. .nr g8 \n(.d
  378. .ds g9 "C Library
  379. .sp -258u
  380. \h'2506u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  381. .sp |\n(g8u
  382. .ft R
  383. .ps 8
  384. .nr g8 \n(.d
  385. .ds g9 "Special
  386. .sp -344u
  387. \h'2506u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  388. .sp |\n(g8u
  389. .ft R
  390. .ps 8
  391. .nr g8 \n(.d
  392. .ds g9 "(UID = Condor)
  393. .sp -517u
  394. \h'2506u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  395. .sp |\n(g8u
  396. .ft R
  397. .ps 8
  398. .nr g8 \n(.d
  399. .ds g9 "Program
  400. .sp -603u
  401. \h'2506u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  402. .sp |\n(g8u
  403. .ft R
  404. .ps 8
  405. .nr g8 \n(.d
  406. .ds g9 "Condor User
  407. .sp -690u
  408. \h'2506u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  409. .sp |\n(g8u
  410. .ft R
  411. .ps 12
  412. .nr g8 \n(.d
  413. .ds g9 "Remote Machine
  414. .sp -906u
  415. \h'2506u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  416. .sp |\n(g8u
  417. \D't 1u'
  418. .sp -1
  419. .sp -1035u
  420. \h'1901u'\D'l 0u 1554u'\D'l 1210u 0u'\D'l 0u -1554u'\D'l -1210u 0u'
  421. .sp -1
  422. \D'l 0u 1554u'\D'l 1210u 0u'\D'l 0u -1554u'\D'l -1210u 0u'
  423. .sp -1
  424. .sp 906u
  425. \h'821u'\D'l -130u 129u'
  426. .sp -1
  427. \h'735u'\D'l -130u 129u'
  428. .sp -1
  429. \D't 3u'
  430. .sp -1
  431. .sp 259u
  432. \h'173u'\D'l 864u 0u'
  433. .sp -1
  434. \h'173u'\D'l 950u 0u'
  435. .sp -1
  436. \D't 1u'
  437. .sp -1
  438. .sp 86u
  439. \h'1066u'\D'l 0u 216u'
  440. .sp -1
  441. \h'893u'\D'l 0u 231u'
  442. .sp -1
  443. .sp 231u
  444. \h'893u'\D'g 29u 14u 57u 15u 58u -15u 29u -29u'
  445. .sp -1
  446. .sp -187u
  447. \h'979u'\D'g -86u -44u 86u -43u 87u 43u -87u 44u'
  448. .sp -1
  449. \h'720u'\D'g -86u -44u 86u -43u 87u 43u -87u 44u'
  450. .sp -1
  451. .sp 187u
  452. \h'634u'\D'g 29u 14u 57u 15u 58u -15u 29u -29u'
  453. .sp -1
  454. .sp -231u
  455. \h'634u'\D'l 0u 231u'
  456. .sp -1
  457. \h'807u'\D'l 0u 216u'
  458. .sp -1
  459. \h'547u'\D'l 0u 216u'
  460. .sp -1
  461. \h'375u'\D'l 0u 231u'
  462. .sp -1
  463. .sp 231u
  464. \h'375u'\D'g 29u 14u 57u 15u 58u -15u 28u -29u'
  465. .sp -1
  466. .sp -187u
  467. \h'461u'\D'g -86u -44u 86u -43u 86u 43u -86u 44u'
  468. .sp -1
  469. .sp -44u
  470. \h'331u'\D'l 0u 216u'
  471. .sp -1
  472. \h'159u'\D'l 0u 231u'
  473. .sp -1
  474. .sp 231u
  475. \h'159u'\D'g 29u 14u 57u 15u 58u -15u 28u -29u'
  476. .sp -1
  477. .sp -187u
  478. \h'245u'\D'g -86u -44u 86u -43u 86u 43u -86u 44u'
  479. .sp -1
  480. .ft R
  481. .ps 8
  482. .nr g8 \n(.d
  483. .ds g9 "Local File System
  484. .sp -216u
  485. \h'605u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  486. .sp |\n(g8u
  487. \D't 1u'
  488. .sp -1
  489. .sp -604u
  490. \h'519u'\D'l 518u 0u'
  491. .sp -1
  492. .sp -173u
  493. \h'519u'\D'l 518u 0u'
  494. .sp -1
  495. .sp -259u
  496. \h'519u'\D'l 0u 604u'\D'l 518u 0u'\D'l 0u -604u'\D'l -518u 0u'
  497. .sp -1
  498. .ft R
  499. .ps 8
  500. .nr g8 \n(.d
  501. .ds g9 "Kernel
  502. .sp 518u
  503. \h'778u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  504. .sp |\n(g8u
  505. .ft R
  506. .ps 8
  507. .nr g8 \n(.d
  508. .ds g9 "C Library
  509. .sp 346u
  510. \h'778u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  511. .sp |\n(g8u
  512. .ft R
  513. .ps 8
  514. .nr g8 \n(.d
  515. .ds g9 "(UID = User)
  516. .sp 173u
  517. \h'778u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  518. .sp |\n(g8u
  519. .ft R
  520. .ps 8
  521. .nr g8 \n(.d
  522. .ds g9 "Shadow
  523. .sp 86u
  524. \h'778u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  525. .sp |\n(g8u
  526. .ft R
  527. .ps 12
  528. .nr g8 \n(.d
  529. .ds g9 "Initiating Machine
  530. .sp -130u
  531. \h'605u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  532. .sp |\n(g8u
  533. .ft R
  534. .ps 8
  535. .nr g8 \n(.d
  536. .ds g9 "System Call Request
  537. .sp 86u
  538. \h'1555u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  539. .sp |\n(g8u
  540. .ft R
  541. .ps 8
  542. .nr g8 \n(.d
  543. .ds g9 "System Call Reply
  544. .sp 432u
  545. \h'1555u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  546. .sp |\n(g8u
  547. .ft R
  548. .ps 8
  549. .nr g8 \n(.d
  550. .ds g9 "Figure 2: Remote System Calls
  551. .sp 1468u
  552. \h'1469u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  553. .sp |\n(g8u
  554. .sp 1468u
  555. \D't -1u'\D's -1u'
  556. .br
  557. .ft \n(g3
  558. .ps \n(g4
  559. .GE
  560. .)b
  561. .sh 1 Checkpointing
  562. .pp
  563. To checkpoint a UNIX process, several things must be preserved.
  564. The text, data, stack, and register contents are needed, as well as
  565. information about what files are open, where they are seek'd to,
  566. and what mode they were opened in.
  567. The data, and stack are available in a core file,
  568. while the text is available in the original executable.
  569. Condor gathers the information about currently open files through
  570. the special C library.
  571. In condor's special C library the system call stubs for
  572. .q open ,
  573. .q close ,
  574. and
  575. .q dup
  576. not only do those things remotely, but they also record which files
  577. are opened in what mode, and which file descriptors correspond to
  578. which files.
  579. .pp
  580. Condor causes a running job to checkpoint by sending it a signal.
  581. When the program is linked, a special version of
  582. .q crt0
  583. is included which sets up CKPT() as that signal handler.
  584. When CKPT() is called, it updates the table of
  585. open files by seeking each one to the current location and recording
  586. the file position.
  587. Next a setjmp(3) is executed to save key register contents in a global
  588. data area, then the process sends itself a signal which results in a
  589. core dump.
  590. The condor software then combines the original executable file, and the
  591. core file to produce a
  592. .q checkpoint
  593. file, (figure 3).
  594. The checkpoint file is itself executable.
  595. .pp
  596. When the checkpoint file is restarted, it starts from the crt0 code
  597. just like any UNIX executable, but again this code is special,
  598. and it will set up the restart() routine as a signal handler with
  599. a special signal stack, then send itself that signal.
  600. When restart() is called, it will operate in the temporary stack area
  601. and read the saved stack in from the checkpoint file,
  602. reopen and reposition all files from the saved file state information,
  603. and execute a longjmp(3) back to CKPT().
  604. When the restart routine returns, it does so with respect to
  605. the restored stack, and CKPT() returns to the routine which was active
  606. at the time of the checkpoint signal, not crt0.
  607. To the user code, checkpointing looks exactly like a signal handler
  608. was called, and restarting from a checkpoint looks like a return from
  609. that signal handler.
  610. .(b
  611. .br
  612. .nr g1 1868u
  613. .nr g2 1727u
  614. .GS C
  615. .nr g3 \n(.f
  616. .nr g4 \n(.s
  617. \0
  618. .sp -1
  619. \D't 1u'
  620. .sp -1
  621. .sp 559u
  622. \h'1588u'\D'g -280u -92u 280u -94u 280u 94u -280u 92u'
  623. .sp -1
  624. .sp 280u
  625. \h'1308u'\D'g 93u 47u 187u 47u 187u -47u 93u -47u'
  626. .sp -1
  627. .sp -372u
  628. \h'1868u'\D'l 0u 372u'
  629. .sp -1
  630. \h'1308u'\D'l 0u 372u'
  631. .sp -1
  632. .sp 466u
  633. \h'280u'\D'g -280u -94u 280u -93u 280u 93u -280u 94u'
  634. .sp -1
  635. .sp 560u
  636. \D'g 93u 47u 187u 47u 187u -47u 93u -47u'
  637. .sp -1
  638. .sp -654u
  639. \D'l 0u 654u'
  640. .sp -1
  641. .sp -652u
  642. \h'280u'\D'g -280u -94u 280u -93u 280u 93u -280u 94u'
  643. .sp -1
  644. .sp 280u
  645. \D'g 93u 46u 187u 46u 187u -46u 93u -46u'
  646. .sp -1
  647. .sp -374u
  648. \h'560u'\D'l 0u 374u'
  649. .sp -1
  650. \D'l 0u 374u'
  651. .sp -1
  652. .ft R
  653. .ps 8
  654. .nr g8 \n(.d
  655. .ds g9 "text
  656. .sp 374u
  657. \h'280u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  658. .sp |\n(g8u
  659. \D't 1u'
  660. .sp -1
  661. .sp 234u
  662. \D'g 93u 46u 187u 47u 187u -47u 93u -46u'
  663. .sp -1
  664. .ft R
  665. .ps 8
  666. .nr g8 \n(.d
  667. .ds g9 "data
  668. .sp 1073u
  669. \h'280u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  670. .sp |\n(g8u
  671. .ft R
  672. .ps 8
  673. .nr g8 \n(.d
  674. .ds g9 "stack
  675. .sp 933u
  676. \h'280u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  677. .sp |\n(g8u
  678. .ft R
  679. .ps 8
  680. .nr g8 \n(.d
  681. .ds g9 "registers
  682. .sp 793u
  683. \h'280u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  684. .sp |\n(g8u
  685. \D't 1u'
  686. .sp -1
  687. .sp 933u
  688. \D'g 93u 46u 187u 47u 187u -47u 93u -46u'
  689. .sp -1
  690. .sp -140u
  691. \D'g 93u 46u 187u 47u 187u -47u 93u -46u'
  692. .sp -1
  693. .sp -140u
  694. \D'g 93u 46u 187u 47u 187u -47u 93u -46u'
  695. .sp -1
  696. .ft R
  697. .ps 8
  698. .nr g8 \n(.d
  699. .ds g9 "Executable
  700. .sp -374u
  701. \h'280u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  702. .sp |\n(g8u
  703. .ft R
  704. .ps 8
  705. .nr g8 \n(.d
  706. .ds g9 "Core
  707. .sp 653u
  708. \h'280u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  709. .sp |\n(g8u
  710. .ft R
  711. .ps 8
  712. .nr g8 \n(.d
  713. .ds g9 "Checkpoint
  714. \h'1588u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  715. .sp |\n(g8u
  716. \D't 1u'
  717. .sp -1
  718. .sp -141u
  719. \h'560u'\D'l 0u 654u'
  720. .sp -1
  721. .sp -419u
  722. \h'607u'\D'l 654u 93u'
  723. .sp -1
  724. .sp 93u
  725. \h'1261u'\D'l -31u 13u'\D'l 14u -15u'\D'l -10u -19u'\D'l 27u 21u'
  726. .sp -1
  727. .sp 513u
  728. \h'607u'\D'l 654u -420u'
  729. .sp -1
  730. .sp -420u
  731. \h'1261u'\D'l -15u 30u'\D'l 0u -21u'\D'l -19u -8u'\D'l 34u -1u'
  732. .sp -1
  733. .sp 560u
  734. \h'607u'\D'l 654u -467u'
  735. .sp -1
  736. .sp -467u
  737. \h'1261u'\D'l -14u 32u'\D'l 0u -22u'\D'l -20u -7u'\D'l 34u -3u'
  738. .sp -1
  739. .sp 654u
  740. \h'607u'\D'l 654u -560u'
  741. .sp -1
  742. .sp -560u
  743. \h'1261u'\D'l -11u 32u'\D'l -2u -21u'\D'l -21u -6u'\D'l 34u -5u'
  744. .sp -1
  745. .ft R
  746. .ps 8
  747. .nr g8 \n(.d
  748. .ds g9 "(incl. file info)
  749. .sp 700u
  750. \h'280u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  751. .sp |\n(g8u
  752. .ft R
  753. .ps 8
  754. .nr g8 \n(.d
  755. .ds g9 "Figure 3: Creating a Checkpoint File
  756. .sp 934u
  757. \h'1027u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  758. .sp |\n(g8u
  759. .sp 934u
  760. \D't -1u'\D's -1u'
  761. .br
  762. .ft \n(g3
  763. .ps \n(g4
  764. .GE
  765. .)b
  766. .sh 1 "Control Software"
  767. .pp
  768. Each machine in the condor pool runs two daemons, the
  769. .b schedd
  770. and the
  771. .b startd .
  772. In addition, one machine runs two other daemons called the
  773. .b collector
  774. and the
  775. .b negotiator .
  776. While the
  777. .b collector
  778. and the
  779. .b negotiator
  780. are separate processes, they
  781. work closely together, and for purposes of this discussion can
  782. be considered one logical process called the
  783. .b "central manager" .
  784. The
  785. .b "central manager"
  786. has the job of keeping track of which machines are idle,
  787. and allocating those machines to other machines which have condor jobs
  788. to run.
  789. On each machine the
  790. .b schedd
  791. maintains a queue of condor jobs,
  792. and negotiates with the
  793. .b "central manager"
  794. to get permission to run those jobs on remote machines.
  795. The
  796. .b startd
  797. determines whether its machine is idle, and also
  798. is responsible for starting and managing foreign jobs which it
  799. may be hosting.
  800. On machines running the X window system,
  801. an additional daemon the
  802. .b kbdd
  803. will periodically inform the
  804. .b startd
  805. of the keyboard and mouse
  806. .q "idle time" .
  807. Periodically the
  808. .b startd
  809. will examine its machine, and update the
  810. .b "central manager"
  811. on its degree of "idleness".
  812. Also periodically the
  813. .b schedd
  814. will examine its job queue and update the
  815. .b "central manager"
  816. on how many jobs it wants to run and how many jobs
  817. it is currently running, (figure 4).
  818. .(b
  819. .br
  820. .nr g1 3299u
  821. .nr g2 1727u
  822. .GS C
  823. .nr g3 \n(.f
  824. .nr g4 \n(.s
  825. \0
  826. .sp -1
  827. .ft R
  828. .ps 8
  829. .nr g8 \n(.d
  830. .ds g9 "Central Manager
  831. .sp 314u
  832. \h'1650u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  833. .sp |\n(g8u
  834. \D't 1u'
  835. .sp -1
  836. .sp 393u
  837. \h'1650u'\D'g -314u -79u 314u -79u 314u 79u -314u 79u'
  838. .sp -1
  839. .sp 470u
  840. \h'393u'\D'g -314u -79u 314u -78u 314u 78u -314u 79u'
  841. .sp -1
  842. \h'1178u'\D'g -314u -79u 314u -78u 315u 78u -315u 79u'
  843. .sp -1
  844. \h'2121u'\D'g -314u -79u 314u -78u 314u 78u -314u 79u'
  845. .sp -1
  846. \h'2906u'\D'g -314u -79u 314u -78u 315u 78u -315u 79u'
  847. .sp -1
  848. .ft R
  849. .ps 8
  850. .nr g8 \n(.d
  851. .ds g9 "Schedd
  852. .sp -79u
  853. \h'1178u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  854. .sp |\n(g8u
  855. .ft R
  856. .ps 8
  857. .nr g8 \n(.d
  858. .ds g9 "Schedd
  859. .sp -79u
  860. \h'2121u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  861. .sp |\n(g8u
  862. .ft R
  863. .ps 8
  864. .nr g8 \n(.d
  865. .ds g9 "Startd
  866. .sp -79u
  867. \h'2906u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  868. .sp |\n(g8u
  869. .ft R
  870. .ps 8
  871. .nr g8 \n(.d
  872. .ds g9 "Startd
  873. .sp -79u
  874. \h'393u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  875. .sp |\n(g8u
  876. \D't 1u'
  877. .sp -1
  878. .sp -235u
  879. \D'l 0u 942u'\D'l 1571u 0u'\D'l 0u -942u'\D'l -1571u 0u'
  880. .sp -1
  881. \h'1728u'\D'l 0u 942u'\D'l 1571u 0u'\D'l 0u -942u'\D'l -1571u 0u'
  882. .sp -1
  883. .sp -628u
  884. \h'1021u'\D'l 0u 550u'\D'l 1257u 0u'\D'l 0u -550u'\D'l -1257u 0u'
  885. .sp -1
  886. .ft I
  887. .ps 8
  888. .nr g8 \n(.d
  889. .ds g9 "machine a
  890. .sp 157u
  891. \h'1964u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  892. .sp |\n(g8u
  893. .ft I
  894. .ps 8
  895. .nr g8 \n(.d
  896. .ds g9 "machine b
  897. .sp 1491u
  898. \h'1257u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  899. .sp |\n(g8u
  900. .ft I
  901. .ps 8
  902. .nr g8 \n(.d
  903. .ds g9 "machine c
  904. .sp 1491u
  905. \h'2985u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  906. .sp |\n(g8u
  907. \D't 1u'
  908. .sp -1
  909. .sp 706u
  910. \h'550u'\D'l 943u -313u'
  911. .sp -1
  912. .sp -313u
  913. \h'1493u'\D'l -19u 22u'\D'l 5u -18u'\D'l -14u -10u'\D'l 28u 6u'
  914. .sp -1
  915. .sp 313u
  916. \h'1178u'\D'l 393u -313u'
  917. .sp -1
  918. .sp -313u
  919. \h'1571u'\D'l -10u 26u'\D'l -1u -17u'\D'l -17u -6u'\D'l 28u -3u'
  920. .sp -1
  921. .sp 313u
  922. \h'1178u'\D'l 10u -27u'\D'l 2u 18u'\D'l 17u 5u'\D'l -29u 4u'
  923. .sp -1
  924. .sp -313u
  925. \h'1728u'\D'l 236u 313u'
  926. .sp -1
  927. .sp 313u
  928. \h'1964u'\D'l -27u -11u'\D'l 18u -1u'\D'l 6u -17u'\D'l 3u 29u'
  929. .sp -1
  930. .sp -313u
  931. \h'1728u'\D'l 27u 10u'\D'l -18u 1u'\D'l -6u 17u'\D'l -3u -28u'
  932. .sp -1
  933. .sp -40u
  934. \h'1925u'\D'l 824u 353u'
  935. .sp -1
  936. \h'1925u'\D'l 28u -3u'\D'l -15u 9u'\D'l 3u 18u'\D'l -16u -24u'
  937. .sp -1
  938. .ft R
  939. .ps 8
  940. .nr g8 \n(.d
  941. .ds g9 "Legend
  942. .sp -314u
  943. \h'2435u'\v'0.85n'\&\*(g9
  944. .sp |\n(g8u
  945. \D's 4u'\D't 1u'
  946. .sp -1
  947. .sp -196u
  948. \h'2514u'\D'l 157u 0u'
  949. .sp -1
  950. \D's -1u'
  951. .sp -1
  952. .sp 78u
  953. \h'2514u'\D'l 157u 0u'
  954. .sp -1
  955. .ft R
  956. .ps 8
  957. .nr g8 \n(.d
  958. .ds g9 "process started by fork/exec
  959. .sp -78u
  960. \h'2710u'\v'0.85n'\&\*(g9
  961. .sp |\n(g8u
  962. .ft R
  963. .ps 8
  964. .nr g8 \n(.d
  965. .ds g9 "communication link
  966. \h'2710u'\v'0.85n'\&\*(g9
  967. .sp |\n(g8u
  968. .ft R
  969. .ps 8
  970. .nr g8 \n(.d
  971. .ds g9 "Figure 4: Condor Processes With No Jobs Running
  972. .sp 1492u
  973. \h'1650u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  974. .sp |\n(g8u
  975. \D't 1u'
  976. .sp -1
  977. .sp 932u
  978. \h'1174u'\D'g -315u -78u 315u -79u 314u 79u -314u 78u'
  979. .sp -1
  980. .ft R
  981. .ps 8
  982. .nr g8 \n(.d
  983. .ds g9 "Kbdd
  984. .sp -83u
  985. \h'1183u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  986. .sp |\n(g8u
  987. \D't 1u'
  988. .sp -1
  989. \h'2897u'\D'g -315u -78u 315u -79u 314u 79u -314u 78u'
  990. .sp -1
  991. .ft R
  992. .ps 8
  993. .nr g8 \n(.d
  994. .ds g9 "Kbdd
  995. .sp -83u
  996. \h'2906u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  997. .sp |\n(g8u
  998. \D't 1u'
  999. .sp -1
  1000. .sp -314u
  1001. \h'2906u'\D'l 0u 152u'
  1002. .sp -1
  1003. \h'2906u'\D'l 15u 25u'\D'l -15u -10u'\D'l -14u 10u'\D'l 14u -25u'
  1004. .sp -1
  1005. .sp 152u
  1006. \h'1178u'\D'l -549u -157u'
  1007. .sp -1
  1008. .sp -157u
  1009. \h'629u'\D'l 27u -7u'\D'l -13u 11u'\D'l 5u 17u'\D'l -19u -21u'
  1010. .sp -1
  1011. .sp 879u
  1012. \D't -1u'\D's -1u'
  1013. .br
  1014. .ft \n(g3
  1015. .ps \n(g4
  1016. .GE
  1017. .)b
  1018. .pp
  1019. At some point the
  1020. .b "central manager"
  1021. may learn that
  1022. .i "machine b"
  1023. is idle, and decide that
  1024. .i "machine c"
  1025. should execute one of its jobs remotely on
  1026. .i "machine b" .
  1027. The
  1028. .b "central manager"
  1029. will then contact the
  1030. .b schedd
  1031. on
  1032. .i "machine c"
  1033. and give it
  1034. .q permission
  1035. to run a job on
  1036. .i "machine b" .
  1037. The
  1038. .b schedd
  1039. on
  1040. .i "machine c"
  1041. will then select a job from its queue and spawn off a
  1042. .b shadow
  1043. process to run it.
  1044. The
  1045. .b shadow
  1046. will then contact the
  1047. .b startd
  1048. on
  1049. .i "machine b"
  1050. and tell it that it would
  1051. like to run a job.
  1052. If the situation on
  1053. .i "machine b"
  1054. hasn't changed since the last update to the
  1055. .b "central manager" ,
  1056. .i "machine b"
  1057. will still be idle, and will respond with an OK.
  1058. The
  1059. .b startd
  1060. on
  1061. .i "machine b"
  1062. then spawns a process called the
  1063. .b starter .
  1064. It's the
  1065. .b starter's
  1066. job to start and manage the remotely running job
  1067. (figure 5).
  1068. .(b
  1069. .br
  1070. .nr g1 3299u
  1071. .nr g2 1727u
  1072. .GS C
  1073. .nr g3 \n(.f
  1074. .nr g4 \n(.s
  1075. \0
  1076. .sp -1
  1077. .ft R
  1078. .ps 8
  1079. .nr g8 \n(.d
  1080. .ds g9 "communication link
  1081. .sp 235u
  1082. \h'2710u'\v'0.85n'\&\*(g9
  1083. .sp |\n(g8u
  1084. .ft R
  1085. .ps 8
  1086. .nr g8 \n(.d
  1087. .ds g9 "process started by fork/exec
  1088. .sp 157u
  1089. \h'2710u'\v'0.85n'\&\*(g9
  1090. .sp |\n(g8u
  1091. \D't 1u'
  1092. .sp -1
  1093. .sp 235u
  1094. \h'2514u'\D'l 157u 0u'
  1095. .sp -1
  1096. \D's 4u'
  1097. .sp -1
  1098. .sp -78u
  1099. \h'2514u'\D'l 157u 0u'
  1100. .sp -1
  1101. .ft R
  1102. .ps 8
  1103. .nr g8 \n(.d
  1104. .ds g9 "Legend
  1105. .sp -118u
  1106. \h'2435u'\v'0.85n'\&\*(g9
  1107. .sp |\n(g8u
  1108. \D't 1u'
  1109. .sp -1
  1110. .sp 706u
  1111. \h'2121u'\D'l 0u 157u'
  1112. .sp -1
  1113. \h'393u'\D'l 0u 157u'
  1114. .sp -1
  1115. \D's -1u'
  1116. .sp -1
  1117. .sp 236u
  1118. \h'1807u'\D'l -25u 14u'\D'l 10u -14u'\D'l -10u -15u'\D'l 25u 15u'
  1119. .sp -1
  1120. .sp -315u
  1121. \h'707u'\D'l 28u -7u'\D'l -14u 11u'\D'l 6u 17u'\D'l -20u -21u'
  1122. .sp -1
  1123. .sp 315u
  1124. \h'1807u'\D'l -1100u -315u'
  1125. .sp -1
  1126. .sp -746u
  1127. \h'1925u'\D'l 28u -3u'\D'l -15u 9u'\D'l 3u 18u'\D'l -16u -24u'
  1128. .sp -1
  1129. \h'1925u'\D'l 824u 353u'
  1130. .sp -1
  1131. .sp 40u
  1132. \h'1728u'\D'l 27u 10u'\D'l -18u 1u'\D'l -6u 17u'\D'l -3u -28u'
  1133. .sp -1
  1134. .sp 313u
  1135. \h'1964u'\D'l -27u -11u'\D'l 18u -1u'\D'l 6u -17u'\D'l 3u 29u'
  1136. .sp -1
  1137. .sp -313u
  1138. \h'1728u'\D'l 236u 313u'
  1139. .sp -1
  1140. .sp 313u
  1141. \h'1178u'\D'l 10u -27u'\D'l 2u 18u'\D'l 17u 5u'\D'l -29u 4u'
  1142. .sp -1
  1143. .sp -313u
  1144. \h'1571u'\D'l -10u 26u'\D'l -1u -17u'\D'l -17u -6u'\D'l 28u -3u'
  1145. .sp -1
  1146. .sp 313u
  1147. \h'1178u'\D'l 393u -313u'
  1148. .sp -1
  1149. .sp -313u
  1150. \h'1493u'\D'l -19u 22u'\D'l 5u -18u'\D'l -14u -10u'\D'l 28u 6u'
  1151. .sp -1
  1152. .sp 313u
  1153. \h'550u'\D'l 943u -313u'
  1154. .sp -1
  1155. .ft I
  1156. .ps 8
  1157. .nr g8 \n(.d
  1158. .ds g9 "machine c
  1159. .sp 785u
  1160. \h'2985u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1161. .sp |\n(g8u
  1162. .ft I
  1163. .ps 8
  1164. .nr g8 \n(.d
  1165. .ds g9 "machine b
  1166. .sp 785u
  1167. \h'1257u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1168. .sp |\n(g8u
  1169. .ft I
  1170. .ps 8
  1171. .nr g8 \n(.d
  1172. .ds g9 "machine a
  1173. .sp -549u
  1174. \h'1964u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1175. .sp |\n(g8u
  1176. \D't 1u'
  1177. .sp -1
  1178. .sp -706u
  1179. \h'1021u'\D'l 0u 550u'\D'l 1257u 0u'\D'l 0u -550u'\D'l -1257u 0u'
  1180. .sp -1
  1181. .sp 628u
  1182. \h'1728u'\D'l 0u 942u'\D'l 1571u 0u'\D'l 0u -942u'\D'l -1571u 0u'
  1183. .sp -1
  1184. \D'l 0u 942u'\D'l 1571u 0u'\D'l 0u -942u'\D'l -1571u 0u'
  1185. .sp -1
  1186. .ft R
  1187. .ps 8
  1188. .nr g8 \n(.d
  1189. .ds g9 "Startd
  1190. .sp 156u
  1191. \h'393u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1192. .sp |\n(g8u
  1193. .ft R
  1194. .ps 8
  1195. .nr g8 \n(.d
  1196. .ds g9 "Startd
  1197. .sp 156u
  1198. \h'2906u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1199. .sp |\n(g8u
  1200. .ft R
  1201. .ps 8
  1202. .nr g8 \n(.d
  1203. .ds g9 "Shadow
  1204. .sp 471u
  1205. \h'2121u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1206. .sp |\n(g8u
  1207. .ft R
  1208. .ps 8
  1209. .nr g8 \n(.d
  1210. .ds g9 "Schedd
  1211. .sp 156u
  1212. \h'2121u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1213. .sp |\n(g8u
  1214. .ft R
  1215. .ps 8
  1216. .nr g8 \n(.d
  1217. .ds g9 "Schedd
  1218. .sp 156u
  1219. \h'1178u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1220. .sp |\n(g8u
  1221. .ft R
  1222. .ps 8
  1223. .nr g8 \n(.d
  1224. .ds g9 "Starter
  1225. .sp 471u
  1226. \h'393u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1227. .sp |\n(g8u
  1228. \D't 1u'
  1229. .sp -1
  1230. .sp 235u
  1231. \h'2906u'\D'g -314u -79u 314u -78u 315u 78u -315u 79u'
  1232. .sp -1
  1233. .sp 314u
  1234. \h'2121u'\D'g -314u -78u 314u -79u 314u 79u -314u 78u'
  1235. .sp -1
  1236. .sp -314u
  1237. \h'2121u'\D'g -314u -79u 314u -78u 314u 78u -314u 79u'
  1238. .sp -1
  1239. \h'1178u'\D'g -314u -79u 314u -78u 315u 78u -315u 79u'
  1240. .sp -1
  1241. .sp 314u
  1242. \h'393u'\D'g -314u -78u 314u -79u 314u 79u -314u 78u'
  1243. .sp -1
  1244. .sp -314u
  1245. \h'393u'\D'g -314u -79u 314u -78u 314u 78u -314u 79u'
  1246. .sp -1
  1247. .sp -470u
  1248. \h'1650u'\D'g -314u -79u 314u -79u 314u 79u -314u 79u'
  1249. .sp -1
  1250. .ft R
  1251. .ps 8
  1252. .nr g8 \n(.d
  1253. .ds g9 "Central Manager
  1254. .sp -79u
  1255. \h'1650u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1256. .sp |\n(g8u
  1257. .ft R
  1258. .ps 8
  1259. .nr g8 \n(.d
  1260. .ds g9 "Figure 5: Condor Processes While Starting a Job
  1261. .sp 1334u
  1262. \h'1650u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1263. .sp |\n(g8u
  1264. \D't 1u'
  1265. .sp -1
  1266. .sp 774u
  1267. \h'1188u'\D'g -314u -78u 314u -79u 314u 79u -314u 78u'
  1268. .sp -1
  1269. .ft R
  1270. .ps 8
  1271. .nr g8 \n(.d
  1272. .ds g9 "Kbdd
  1273. .sp -88u
  1274. \h'1183u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1275. .sp |\n(g8u
  1276. \D't 1u'
  1277. .sp -1
  1278. .sp -5u
  1279. \h'2926u'\D'g -314u -78u 314u -79u 314u 79u -314u 78u'
  1280. .sp -1
  1281. .ft R
  1282. .ps 8
  1283. .nr g8 \n(.d
  1284. .ds g9 "Kbdd
  1285. .sp -88u
  1286. \h'2921u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1287. .sp |\n(g8u
  1288. \D't 1u'
  1289. .sp -1
  1290. .sp -157u
  1291. \h'2906u'\D'l 0u -152u'
  1292. .sp -1
  1293. .sp -152u
  1294. \h'2911u'\D'l 14u 25u'\D'l -14u -10u'\D'l -15u 9u'\D'l 15u -24u'
  1295. .sp -1
  1296. .sp 152u
  1297. \h'1178u'\D'l -549u -157u'
  1298. .sp -1
  1299. .sp -157u
  1300. \h'629u'\D'l 27u -7u'\D'l -13u 11u'\D'l 5u 17u'\D'l -19u -21u'
  1301. .sp -1
  1302. .sp 879u
  1303. \D't -1u'\D's -1u'
  1304. .br
  1305. .ft \n(g3
  1306. .ps \n(g4
  1307. .GE
  1308. .)b
  1309. .pp
  1310. The
  1311. .b shadow
  1312. on
  1313. .i "machine c"
  1314. will transfer the checkpoint file to the
  1315. .b starter
  1316. on
  1317. .i "machine b" .
  1318. The
  1319. .b starter
  1320. then sets a timer and spawns off the remotely running job
  1321. from
  1322. .i "machine c"
  1323. (figure 6).
  1324. The
  1325. .b shadow
  1326. on
  1327. .i "machine c"
  1328. will handle all system calls for the job.
  1329. When the
  1330. .b starter's
  1331. timer expires it
  1332. will send the user job a checkpoint signal,
  1333. causing it to save its file state and stack, then dump core.
  1334. The
  1335. .b starter
  1336. then builds a new version of the checkpoint file which
  1337. is stored temporarily on
  1338. .i "machine b" .
  1339. The
  1340. .b starter
  1341. restarts the job from the new checkpoint file, and the
  1342. cycle of execute and checkpoint continues.
  1343. At some point, either the job will finish, or
  1344. .i "machine b's"
  1345. user will
  1346. return.
  1347. If the job finishes, the job's owner is notified by mail, and the
  1348. .b starter
  1349. and
  1350. .b shadow
  1351. clean up.
  1352. If
  1353. .i "machine b"
  1354. becomes busy, the
  1355. .b startd
  1356. on
  1357. .i "machine b"
  1358. will detect that either by
  1359. noting recent activity on one of the tty or pty's, or by the rising
  1360. load average.
  1361. When the
  1362. .b startd
  1363. on
  1364. .i "machine b"
  1365. detects this activity, it will send a
  1366. .q suspend
  1367. signal to the
  1368. .b starter ,
  1369. and the
  1370. .b starter
  1371. will temporarily suspend the user job.
  1372. This is because frequently the owners of machines are active for only
  1373. a few seconds, then become idle again.
  1374. This would be the case if the owner were just checking to see if there were
  1375. new mail for example.
  1376. If
  1377. .i "machine b"
  1378. remains busy for a period of about 5 minutes, the
  1379. .b startd
  1380. there will send a
  1381. .q vacate
  1382. signal to the
  1383. .b starter .
  1384. In this case, the
  1385. .b starter
  1386. will abort the user job and return the latest
  1387. checkpoint file to the
  1388. .b shadow
  1389. on
  1390. .i "machine c" .
  1391. If the job had not run long enough on
  1392. .i "machine b"
  1393. to reach a checkpoint,
  1394. the job is just aborted, and will be restarted later from the most
  1395. recent checkpoint on
  1396. .i "machine c" .
  1397. Notice that the
  1398. .b starter
  1399. checkpoints the condor user job periodically rather than waiting
  1400. until the remote workstation's owner wants it back.
  1401. Checkpointing, and in particular core dumping, is an I/O intensive
  1402. activity which we avoid doing when the hosting workstation's owner is active.
  1403. .(b
  1404. .br
  1405. .nr g1 3299u
  1406. .nr g2 1727u
  1407. .GS C
  1408. .nr g3 \n(.f
  1409. .nr g4 \n(.s
  1410. \0
  1411. .sp -1
  1412. .ft R
  1413. .ps 8
  1414. .nr g8 \n(.d
  1415. .ds g9 "communication link
  1416. .sp 235u
  1417. \h'2710u'\v'0.85n'\&\*(g9
  1418. .sp |\n(g8u
  1419. .ft R
  1420. .ps 8
  1421. .nr g8 \n(.d
  1422. .ds g9 "process started by fork/exec
  1423. .sp 157u
  1424. \h'2710u'\v'0.85n'\&\*(g9
  1425. .sp |\n(g8u
  1426. \D't 1u'
  1427. .sp -1
  1428. .sp 235u
  1429. \h'2514u'\D'l 157u 0u'
  1430. .sp -1
  1431. \D's 4u'
  1432. .sp -1
  1433. .sp -78u
  1434. \h'2514u'\D'l 157u 0u'
  1435. .sp -1
  1436. .ft R
  1437. .ps 8
  1438. .nr g8 \n(.d
  1439. .ds g9 "Legend
  1440. .sp -118u
  1441. \h'2435u'\v'0.85n'\&\*(g9
  1442. .sp |\n(g8u
  1443. \D't 1u'
  1444. .sp -1
  1445. .sp 706u
  1446. \h'2121u'\D'l 0u 456u'
  1447. .sp -1
  1448. .sp 314u
  1449. \h'393u'\D'l 0u 157u'
  1450. .sp -1
  1451. .sp -314u
  1452. \h'393u'\D'l 0u 157u'
  1453. .sp -1
  1454. \D's -1u'
  1455. .sp -1
  1456. .sp -510u
  1457. \h'1925u'\D'l 28u -3u'\D'l -15u 9u'\D'l 3u 18u'\D'l -16u -24u'
  1458. .sp -1
  1459. \h'1925u'\D'l 824u 353u'
  1460. .sp -1
  1461. .sp 40u
  1462. \h'1728u'\D'l 27u 10u'\D'l -18u 1u'\D'l -6u 17u'\D'l -3u -28u'
  1463. .sp -1
  1464. .sp 313u
  1465. \h'1964u'\D'l -27u -11u'\D'l 18u -1u'\D'l 6u -17u'\D'l 3u 29u'
  1466. .sp -1
  1467. .sp -313u
  1468. \h'1728u'\D'l 236u 313u'
  1469. .sp -1
  1470. .sp 313u
  1471. \h'1178u'\D'l 10u -27u'\D'l 2u 18u'\D'l 17u 5u'\D'l -29u 4u'
  1472. .sp -1
  1473. .sp -313u
  1474. \h'1571u'\D'l -10u 26u'\D'l -1u -17u'\D'l -17u -6u'\D'l 28u -3u'
  1475. .sp -1
  1476. .sp 313u
  1477. \h'1178u'\D'l 393u -313u'
  1478. .sp -1
  1479. .sp -313u
  1480. \h'1493u'\D'l -19u 22u'\D'l 5u -18u'\D'l -14u -10u'\D'l 28u 6u'
  1481. .sp -1
  1482. .sp 313u
  1483. \h'550u'\D'l 943u -313u'
  1484. .sp -1
  1485. .ft I
  1486. .ps 8
  1487. .nr g8 \n(.d
  1488. .ds g9 "machine c
  1489. .sp 785u
  1490. \h'2985u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1491. .sp |\n(g8u
  1492. .ft I
  1493. .ps 8
  1494. .nr g8 \n(.d
  1495. .ds g9 "machine b
  1496. .sp 785u
  1497. \h'1257u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1498. .sp |\n(g8u
  1499. .ft I
  1500. .ps 8
  1501. .nr g8 \n(.d
  1502. .ds g9 "machine a
  1503. .sp -549u
  1504. \h'1964u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1505. .sp |\n(g8u
  1506. \D't 1u'
  1507. .sp -1
  1508. .sp -706u
  1509. \h'1021u'\D'l 0u 550u'\D'l 1257u 0u'\D'l 0u -550u'\D'l -1257u 0u'
  1510. .sp -1
  1511. .sp 628u
  1512. \h'1728u'\D'l 0u 942u'\D'l 1571u 0u'\D'l 0u -942u'\D'l -1571u 0u'
  1513. .sp -1
  1514. \D'l 0u 942u'\D'l 1571u 0u'\D'l 0u -942u'\D'l -1571u 0u'
  1515. .sp -1
  1516. .ft R
  1517. .ps 8
  1518. .nr g8 \n(.d
  1519. .ds g9 "Startd
  1520. .sp 156u
  1521. \h'393u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1522. .sp |\n(g8u
  1523. .ft R
  1524. .ps 8
  1525. .nr g8 \n(.d
  1526. .ds g9 "Startd
  1527. .sp 156u
  1528. \h'2906u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1529. .sp |\n(g8u
  1530. .ft R
  1531. .ps 8
  1532. .nr g8 \n(.d
  1533. .ds g9 "Shadow
  1534. .sp 785u
  1535. \h'2121u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1536. .sp |\n(g8u
  1537. .ft R
  1538. .ps 8
  1539. .nr g8 \n(.d
  1540. .ds g9 "Schedd
  1541. .sp 156u
  1542. \h'2121u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1543. .sp |\n(g8u
  1544. .ft R
  1545. .ps 8
  1546. .nr g8 \n(.d
  1547. .ds g9 "Schedd
  1548. .sp 156u
  1549. \h'1178u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1550. .sp |\n(g8u
  1551. .ft R
  1552. .ps 8
  1553. .nr g8 \n(.d
  1554. .ds g9 "User Job
  1555. .sp 785u
  1556. \h'393u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1557. .sp |\n(g8u
  1558. .ft R
  1559. .ps 8
  1560. .nr g8 \n(.d
  1561. .ds g9 "Starter
  1562. .sp 471u
  1563. \h'393u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1564. .sp |\n(g8u
  1565. \D't 1u'
  1566. .sp -1
  1567. .sp 235u
  1568. \h'2906u'\D'g -314u -79u 314u -78u 315u 78u -315u 79u'
  1569. .sp -1
  1570. .sp 628u
  1571. \h'2121u'\D'g -314u -78u 314u -79u 314u 79u -314u 78u'
  1572. .sp -1
  1573. .sp -628u
  1574. \h'2121u'\D'g -314u -79u 314u -78u 314u 78u -314u 79u'
  1575. .sp -1
  1576. \h'1178u'\D'g -314u -79u 314u -78u 315u 78u -315u 79u'
  1577. .sp -1
  1578. .sp 628u
  1579. \h'393u'\D'g -314u -78u 314u -79u 314u 79u -314u 78u'
  1580. .sp -1
  1581. .sp -314u
  1582. \h'393u'\D'g -314u -78u 314u -79u 314u 79u -314u 78u'
  1583. .sp -1
  1584. .sp -314u
  1585. \h'393u'\D'g -314u -79u 314u -78u 314u 78u -314u 79u'
  1586. .sp -1
  1587. .sp -470u
  1588. \h'1650u'\D'g -314u -79u 314u -79u 314u 79u -314u 79u'
  1589. .sp -1
  1590. .ft R
  1591. .ps 8
  1592. .nr g8 \n(.d
  1593. .ds g9 "Central Manager
  1594. .sp -79u
  1595. \h'1650u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1596. .sp |\n(g8u
  1597. .ft R
  1598. .ps 8
  1599. .nr g8 \n(.d
  1600. .ds g9 "Figure 6: Condor Processes With One Job Running
  1601. .sp 1334u
  1602. \h'1650u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1603. .sp |\n(g8u
  1604. \D't 1u'
  1605. .sp -1
  1606. .sp 784u
  1607. \h'1178u'\D'g -314u -78u 314u -79u 315u 79u -315u 78u'
  1608. .sp -1
  1609. .ft R
  1610. .ps 8
  1611. .nr g8 \n(.d
  1612. .ds g9 "Kbdd
  1613. .sp -93u
  1614. \h'1178u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1615. .sp |\n(g8u
  1616. \D't 1u'
  1617. .sp -1
  1618. \h'2906u'\D'g -314u -78u 314u -79u 315u 79u -315u 78u'
  1619. .sp -1
  1620. .ft R
  1621. .ps 8
  1622. .nr g8 \n(.d
  1623. .ds g9 "Kbdd
  1624. .sp -93u
  1625. \h'2906u'\v'0.85n'\h-\w\*(g9u/2u\&\*(g9
  1626. .sp |\n(g8u
  1627. \D't 1u'
  1628. .sp -1
  1629. .sp -15u
  1630. \h'629u'\D'l 1178u 236u'
  1631. .sp -1
  1632. .sp 236u
  1633. \h'1807u'\D'l -27u 10u'\D'l 12u -13u'\D'l -6u -16u'\D'l 21u 19u'
  1634. .sp -1
  1635. .sp -236u
  1636. \h'629u'\D'l 27u -9u'\D'l -13u 12u'\D'l 7u 17u'\D'l -21u -20u'
  1637. .sp -1
  1638. .sp 236u
  1639. \h'1807u'\D'l -1100u 0u'
  1640. .sp -1
  1641. \h'707u'\D'l 25u -15u'\D'l -10u 15u'\D'l 10u 15u'\D'l -25u -15u'
  1642. .sp -1
  1643. \h'1807u'\D'l -25u 15u'\D'l 10u -15u'\D'l -10u -15u'\D'l 25u 15u'
  1644. .sp -1
  1645. .sp -393u
  1646. \h'1178u'\D'l -549u -157u'
  1647. .sp -1
  1648. .sp -157u
  1649. \h'629u'\D'l 27u -7u'\D'l -13u 11u'\D'l 5u 17u'\D'l -19u -21u'
  1650. .sp -1
  1651. \h'2906u'\D'l 0u 157u'
  1652. .sp -1
  1653. \h'2906u'\D'l 15u 25u'\D'l -15u -10u'\D'l -14u 10u'\D'l 14u -25u'
  1654. .sp -1
  1655. .sp 879u
  1656. \D't -1u'\D's -1u'
  1657. .br
  1658. .ft \n(g3
  1659. .ps \n(g4
  1660. .GE
  1661. .)b
  1662. .sh 1 "Control Expressions"
  1663. .pp
  1664. The condor control software is driven by a set of powerful
  1665. .q "control expressions" .
  1666. These expressions are read from the file
  1667. .q ~condor/condor_config
  1668. on each machine at run time.
  1669. It is often convenient for many machines of the same type to share
  1670. common control expressions, and this may be done through a fileserver.
  1671. To allow flexibility for control of individual machines, the file
  1672. .q ~condor/condor_config.local
  1673. is provided, and expressions defined there take precedence over those
  1674. defined in condor_config.
  1675. Following are examples of a few of the more important condor control
  1676. expressions with explanations.
  1677. See condor_config(5) for a detailed description of all the control expressions.
  1678. .sh 2 "Starting Foreign Jobs"
  1679. .pp
  1680. This set of expressions is used by the
  1681. .b startd
  1682. to determine when to allow
  1683. a foreign job to begin execution.
  1684. .ta 15n
  1685. .(l
  1686. BackgroundLoad    = 0.3
  1687. StartIdleTime    = 15 * $(MINUTE)
  1688. CPU_Idle    = LoadAvg <= $(BackgroundLoad)
  1689. START        : $(CPU_Idle) && KeyboardIdle > $(StartIdleTime)
  1690. .)l
  1691. .lp
  1692. This example of the START expression specifies that
  1693. to begin execution of a foreign job
  1694. the load average must be less than 0.3, and there must have been no keyboard
  1695. activity during the past 15 minutes.
  1696. .lp
  1697. Other expressions are used to determine when to suspend, resume, and
  1698. abort foreign jobs.
  1699. .sh 2 "Prioritizing Jobs"
  1700. .pp
  1701. The
  1702. .b schedd
  1703. must prioritize its own jobs and negotiate with the
  1704. .b "central manager"
  1705. to get permission to run them.
  1706. It uses a control expression to assign priorities to its local jobs.
  1707. .(l
  1708. PRIO        : (UserPrio * 10) + $(Expanded) - (QDate / 1000000000.0)
  1709. .)l
  1710. .lp
  1711. .q UserPrio
  1712. is a number defined by the jobs owner in a similar spirit to
  1713. the UNIX
  1714. .q nice
  1715. command.
  1716. .q Expanded
  1717. will be 1 if the job has already completed some execution, and
  1718. 0 otherwise.
  1719. This is an issue because expanded jobs require more disk space than
  1720. unexpanded ones.
  1721. .q QDate
  1722. is the UNIX time when the job was submitted.
  1723. The constants are chosen so that
  1724. .q UserPrio
  1725. will be the major criteria,
  1726. .q Expanded
  1727. will be less important, and
  1728. .q QDate
  1729. will be the minor criteria
  1730. in determining job priority.
  1731. .q UserPrio ,
  1732. .q Expanded ,
  1733. and
  1734. .q QDate
  1735. are variables known to the
  1736. .b schedd
  1737. which it determines for each job before applying the PRIO expression.
  1738. .sh 2 "Prioritizing Machines"
  1739. .pp
  1740. The
  1741. .b "central manager"
  1742. does not keep track of individual jobs on the member
  1743. machines.
  1744. Instead it keeps track of how many jobs a machine wants to run, and how
  1745. many it is running at any particular time.
  1746. This keeps the information that must be transmitted between the
  1747. .b schedd
  1748. and the
  1749. .b "central manager"
  1750. to a minimum.
  1751. The
  1752. .b "central manager"
  1753. has the job of prioritizing the machines which want to
  1754. run jobs, then it can give permission to the
  1755. .b schedd
  1756. on high priority
  1757. machines and let them make their own decision about what jobs to run.
  1758. .(l
  1759. UPDATE_PRIO : Prio + Users - Running
  1760. .)l
  1761. .lp
  1762. Periodically the
  1763. .b "central manager"
  1764. will apply this expression to all of the
  1765. machines in the pool.
  1766. The priority of each machine will be incremented by the number of individual
  1767. users on that machine who have jobs in the queue, and decremented by the
  1768. number of jobs that machine is already executing remotely.
  1769. Machines which are running lots of jobs will tend to have low priorities,
  1770. and machines which have jobs to run, but can't run them, will accumulate
  1771. high priorities.
  1772. .sh 1 "Acknowledgements"
  1773. .pp
  1774. This project is based on the idea of a
  1775. .q "processor bank" ,
  1776. which was introduced by Maurice Wilkes in connection with his work on the
  1777. Cambridge Ring.\**
  1778. .(f
  1779. \**Wilkes, M. V.,
  1780. Invited Keynote Address,
  1781. 10th Annual International Symposium on Computer Architecture,
  1782. June 1983.
  1783. .)f
  1784. .pp
  1785. We would like to thank Don Neuhengen and Tom Virgilio for their
  1786. pioneering work on the remote system call implementation;
  1787. Matt Mutka and Miron Livny
  1788. for first convincing us that a general checkpointing mechanism
  1789. could be practical and for ideas on how to distribute control and
  1790. prioritize the jobs;
  1791. and David Dewitt and Marvin Solomon for their continued guidance
  1792. and support throughout this project.
  1793. .pp
  1794. This research was supported by the National Science Foundataion under
  1795. grants MCS81-05904 and DCR-8512862 and by a  Digital Equipment Corporation
  1796. External Research Grant.
  1797. .sh 1 "Copyright Information"
  1798. .lp
  1799. Copyright 1986, 1987, 1988, 1989 University of Wisconsin
  1800. .lp
  1801. Permission to use, copy, modify, and distribute this software and its
  1802. documentation for any purpose and without fee is hereby granted,
  1803. provided that the above copyright notice appear in all copies and that
  1804. both that copyright notice and this permission notice appear in
  1805. supporting documentation, and that the name of the University of
  1806. Wisconsin not be used in advertising or publicity pertaining to
  1807. distribution of the software without specific, written prior
  1808. permission.  The University of Wisconsin makes no representations about
  1809. the suitability of this software for any purpose.  It is provided "as
  1810. is" without express or implied warranty.
  1811. .lp
  1812. THE UNIVERSITY OF WISCONSIN DISCLAIMS ALL WARRANTIES WITH REGARD TO
  1813. THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  1814. FITNESS. IN NO EVENT SHALL THE UNIVERSITY OF WISCONSIN  BE LIABLE FOR
  1815. ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  1816. WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  1817. ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  1818. OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  1819. .lp
  1820. .ta 10n
  1821. Authors:    Allan Bricker and Michael J. Litzkow,
  1822. .br
  1823.     University of Wisconsin, Computer Sciences Dept.
  1824. .sh 1 "Bibliography"
  1825. .np
  1826. Mutka, M. and Livny, M.
  1827. .q "Profiling Workstations' Available Capacity For Remote Execution" .
  1828. .i
  1829. Proceedings of Performance-87, The 12th IFIP W.G. 7.3
  1830. International Symposium on Computer Performance Modeling,
  1831. Measurement and Evaluation.
  1832. .r
  1833. Brussels, Belgium, December 1987.
  1834. .np
  1835. Litzkow, M.
  1836. .q "Remote Unix \(em Turning Idle Workstations Into Cycle Servers" .
  1837. .i
  1838. Proceedings of the Summer 1987 Usenix Conference.
  1839. .r
  1840. Phoenix, Arizona.
  1841. June 1987
  1842. .np
  1843. Mutka, M.
  1844. .i
  1845. Sharing in a Privately Owned Workstation Environment.
  1846. .r
  1847. Ph.D. Th.,
  1848. University of Wisconsin, May 1988.
  1849. .np
  1850. Litzkow, M., Livny, M. and Mutka, M.
  1851. .q "Condor \(em A Hunter of Idle Workstations" .
  1852. .i
  1853. Proceedings of the
  1854. 8th International Conference on Distributed Computing Systems.
  1855. .r
  1856. San Jose, Calif.
  1857. June 1988
  1858. .np
  1859. Bricker, A. and Litzkow M.
  1860. .q "Condor Installation Guide" .
  1861. May 1989
  1862. .np
  1863. Bricker, A. and Litzkow, M.
  1864. Unix manual pages: condor_intro(1), condor(1), condor_q(1), condor_rm(1),
  1865. condor_status(1), condor_summary(1),
  1866. condor_config(5),
  1867. condor_control(8), and condor_master(8).
  1868. May 1989
  1869.