70
Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

Linux numa evolution

Embed Size (px)

Citation preview

Page 1: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

Page 2: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 2

Page 3: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://storage.pardot.com/6342/95370/lf_pub_top500report.pdf

http://upload.wikimedia.org/wikipedia/commons/e/e1/Linus_Torvalds,_2002,

_Australian_Linux_conference.jpg

UNIX Linux

3

Page 4: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 4

Page 5: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

`diff -up`

https://www.kernel.org/doc/Documentation/SubmittingPatches (20.11.2014)

5

Page 6: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam http://thread.gmane.org/gmane.linux.kernel/1392753 6

Page 7: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://upload.wikimedia.org/wikipedia/commons/e/e1/Linus_Torvalds,_2002,_Australian_Linux_conference.jpg

Page 8: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

https://www.kernel.org/doc/Documentation/development-process/2.Process, http://www.linuxfoundation.org/sites/main/files/publications/whowriteslinux.pdf

8

Page 9: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

https://www.kernel.org/doc/Documentation/development-process/2.Process

“9

Page 10: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 10

Page 11: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 11

Page 12: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 12

Page 13: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://en.wikipedia.org/wiki/Scheduling_%28computing%29

13

Page 14: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/254445/

?

14

Page 15: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 15

Page 16: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

https://www.cs.sfu.ca/~fedorova/papers/usenix-numa.pdf

16

Page 17: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

https://www.cs.sfu.ca/~fedorova/papers/asplos284-dashti.pdf

Traffic Imbalance

17

Page 18: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

18

Page 19: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 19

Page 20: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

20

Page 21: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lse.sourceforge.net/numa/topology_api/in-kernel/

21

Page 22: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

asm/topology.h

int __cpu_to_node(int cpu);

int __memblk_to_node(int memblk);

unsigned long __node_to_cpu_mask(int node);

int __parent_node(int node); # /!\ supports hierarchies

http://lse.sourceforge.net/numa/topology_api/in-kernel/

22

Page 23: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 23

Page 24: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

int __cpu_to_node(int cpu);

http://home.arcor.de/efocht/sched/

keep task

& mem on same node

24

Page 25: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

L = local_node();

# regular load balancing as for multicore

# (O(1) scheduler):

balance_node(L);

N = most_loaded_node();

C = most_loaded_cpu(N);

if load(L) <= system_load()

steal_tasks_from_cpu(C);

http://home.arcor.de/efocht/sched/

25

Page 26: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 26

Page 27: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/67005/

27

Page 28: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/80911/

Node

Physical CPU

CPU0 CPU1

Physical CPU

CPU2 CPU3

Node Node Node

minimize cost

of moving task (& mem)

28

Page 29: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

node node

node node

29

Page 30: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

node

node node

node

node

node

30

Page 31: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

node

node node

node

node

node

31

Page 32: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

node

node node

node

node

node

32

Page 33: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

33

Page 34: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

?

34

Page 35: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

mem

node

mem

node

35

Page 36: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

mem

node

mem

node

36

Page 37: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

mem

node

mem

node

37

Page 38: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

mem mem

nodenode

38

Page 39: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

mem

node

mem

node

39

Page 40: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

mem

node

mem

node

40

Page 41: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

mem

node

mem

node

41

Page 42: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/486858/

42

Page 43: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/486858/

mem follows task

43

Page 44: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/486858/

task follows mem

44

Page 45: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/486858/tasks w/ shared

mem on same node

45

Page 46: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/488709/

46

Page 47: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/488709/

memmem

nodenode

⚡⚡

47

Page 48: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

Unless you're going to listen to feedback I give you, I'm going to completely stop reading your patches, I don't give a rats arse you work for the same company anymore. You're impossible to work with.

http://lwn.net/Articles/522093/

“48

Page 49: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/522093/, http://lwn.net/Articles/524535/

49

Page 50: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 50

Page 51: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/524977/, http://thread.gmane.org/gmane.linux.kernel/1392753

51

Page 52: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 52

Page 53: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

autonuma

53

Page 54: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/568870/scheduling: NUMA

and load balancing and groups

54

Page 55: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://thread.gmane.org/gmane.linux.kernel/1631332

mem

node

mem

node

55

Page 56: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://thread.gmane.org/gmane.linux.kernel/1631332

mem

node

mem

node

56

Page 57: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://thread.gmane.org/gmane.linux.kernel/1631332

57

Page 58: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 58

Page 59: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 59

Page 60: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://thread.gmane.org/gmane.linux.kernel/1808344

60

Page 61: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://thread.gmane.org/gmane.linux.kernel/1808344

node node

node node

61

Page 62: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://thread.gmane.org/gmane.linux.kernel/1808344

backplanecontroller

node

backplanecontroller

backplanecontroller

backplane

node

node

node

node

node 62

Page 63: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/591995/

63

Page 64: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/591995/

64

Page 65: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/591995/

65

Page 66: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

http://lwn.net/Articles/591995/

node node

mem

NIC

DMA?IO

adapter

mem

66

Page 67: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 67

Page 68: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam 68

Page 69: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

Page 70: Linux numa evolution

Fredrik Teschke, Lukas Pirl seminar on NUMA, Hasso Plattner Institue, Potsdam

→ ≈ →

CPU

CPU

CPU CPU

CPU

node

node

node node

node