# Python, <s>358</s> <s>281</s> <s>268</s> 221 bytes

Monochrome is *so* last year. This uses multiple processes and syscalls to achieve **two color** CPU graphs!

 from time import*
 import os
 A='%-99o'%int('t12q2lxqkap48euoej9429cstbnazg84zyxflqzi8k1',36)
 f=open('/dev/urandom')
 for i in'0123456':
 t=os.fork()
 while t<1:T=int(time())%50;(sleep,(id,f.readlines)[i<A[T+49]])[i<A[T]](1)

Output from Activity Monitor (OS X 10.9):
> ![Activity Monitor CPU Load graph](https://i.sstatic.net/QLl3f.png) 
> ![Activity Monitor CPU History graph](https://i.sstatic.net/T0O6E.png)
> 
> ![Repeats on the CPU History graph](https://i.sstatic.net/uorWS.png)

Output from MenuMeters:
> ![MenuMeters output](https://i.sstatic.net/xCGVF.png)

All outputs were generated with an update speed of 1s. No significant background tasks were running, though this output quite easily beats out any single-threaded CPU task.

This code assumes you have 8 cores. It should be pretty easy to modify for fewer/more. It is *portable* to Linux/UNIX systems (though it has only been tested on OS X), and should produce the same two-color output for any CPU monitor that can distinguish User from System CPU time.

Essentially, this works by forking off seven processes, each of which will choose to spend 1 second sleeping, spinning in usermode, or spinning the kernel. Spinning in kernel mode is achieved by requesting large globs of data from `/dev/urandom`, which forces the driver backing `/dev/urandom` to spend a lot of "system" CPU cycles.

EDITED [07/21]: Shortened significantly by using `fork()` instead of `multiprocessing.Process` (`/dev/urandom` only works on *NIX systems anyway so this doesn't reduce portability). Note however that the program now spawns *background* tasks; you may have to `killall Python` (or similar) to get rid of the CPU-eaters.

----------

I couldn't resist implementing a few more letters. I got 16 letters, plus a few symbols:

![~/._PIN](https://i.sstatic.net/Io1Bv.png)
![ANCHO...](https://i.sstatic.net/Otbxv.png)
![...VY](https://i.sstatic.net/iBTBP.png)

The complete alphabet is "ACDFHILMNOPTUVWY", with symbols "._~/\". There are probably lots more characters that can be represented.

Entirely ungolfed code for the extra letters:

 from time import*
 from multiprocessing import*

 chars6 = {
 'A': ('123456654321',
 '000123321000'),
 'C': ('344556666666',
 '321110000000'),
 'D': ('666666655443',
 '000000011123'),
 'F': ('66666666666666',
 '00002222244444'),
 'H': ('666664444466666',
 '000002222200000'),
 'I': ('66666',
 '00000'),
 'L': ('666662222222',
 '000000000000'),
 'M': ('6665544334455666',
 '0004321001234000'),
 'N': ('66665544336666',
 '00003322110000'),
 'O': ('3445556666555443',
 '3221110000111223'),
 'P': ('666666666555',
 '000003333444'),
 'T': ('777776666677777',
 '444440000044444'),
 'U': ('6666322236666',
 '4211000001124'),
 'V': ('66654322345666',
 '33321000012333'),
 'W': ('66542466424566',
 '43210133101234'),
 'Y': ('66665433456666',
 '44333000033344'),
 '_': ('1111111111',
 '0000000000'),
 ' ': ('000',
 '000'),
 '.': ('12221',
 '10001'),
 '~': ('44445544334444',
 '11223322112233'),
 '/': ('2234566',
 '0012344'),
 '\\': ('6654322',
 '4432100'),
 }
 
 s = 'ANCHOVY '
 A = '000'.join(chars6[t][0] for t in s)
 B = '000'.join(chars6[t][1] for t in s)
 
 t=time()
 f=open('/dev/urandom')
 def F(n):
 while 1:T=int(time()-t)%len(A);[sleep,[].count,lambda x:f.read(4**9)][(n<int(A[T]))+(n<int(B[T]))](1)
 for i in range(7):Process(target=F,args=(i,)).start()
 F(7)