This file is indexed.

/usr/share/doc/HOWTO/fr-html/SMP-HOWTO.html is in doc-linux-fr-html 2013.01-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.71">
<title>Linux SMP HOWTO</title>
</head>
<body>
<h1>Linux SMP HOWTO</h1>
<h2>David Mentr&eacute;, <code>David.Mentre@irisa.fr</code></h2>
v1.9, 13 janvier 2000
<hr>
<em>Ce HOWTO passe en revue les principaux probl&egrave;mes et
leurs solutions li&eacute;s la configuration et &agrave; l'emploi
d'un syst&egrave;me SMP sous Linux.</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<p>Linux fonctionne sur les machines SMP (Symetric
Multi-Processors). Le support SMP fut introduit dans la version 2.0
du noyau et a &eacute;t&eacute; largement am&eacute;lior&eacute;
depuis. La gestion est beaucoup plus fine dans la s&eacute;rie
2.2.x que dans la 2.0.x, d'o&ugrave; de meilleures performances
lorsque les processus font appel au noyau !</p>
<p>HOWTO maintenu par David Mentr&eacute; ( <a href=
"mailto:David.Mentre@irisa.fr">David.Mentre@irisa.fr</a>). La
derni&egrave;re version de ce HOWTO peut &ecirc;tre obtenue
&agrave;</p>
<ul>
<li><a href=
"http://www.irisa.fr/prive/mentre/smp-howto/">http://www.irisa.fr/prive/mentre/smp-howto/</a>
(France)</li>
<li><a href=
"http://www.phy.duke.edu/brahma/smp-faq/">http://www.phy.duke.edu/brahma/smp-faq/</a>
(USA)</li>
</ul>
<p>Si vous voulez contribuer &agrave; ce HOWTO, je
pr&eacute;f&egrave;re les diffs <a href=
"http://www.irisa.fr/prive/mentre/smp-howto/smp-howto.sgml">SGML
version</a> de ce document, mais toute remarque (en texte pur) sera
grandement appr&eacute;ci&eacute;. Si vous m'envoyez un e-mail
&agrave; propos de ce document, ins&eacute;rez s'il vous
pla&icirc;t un tag tel <code>[Linux SMP HOWTO]</code> dans le champ
<code>Suject:</code> de votre e-mail. &Ccedil;a m'aide &agrave;
trier automatiquement mon courrier (et vous recevrez une
r&eacute;ponse plus rapide <code>;)</code>).</p>
<p>Ce HOWTO reprend et enrichit <a href=
"http://www.ihoc.net/linux-smp-faq-draft.html">first draft</a>
&eacute;crit par <b>Chris Pirih</b>.</p>
<p>Toutes les informations contenues dans ce HOWTO sont fournies
"tel que". Toute garantie explicite, implicite ou l&eacute;gale,
concernant l'exactitude de l'information, de la convenance &agrave;
quelque usage particulier est par la pr&eacute;sente
sp&eacute;cifiquement d&eacute;clin&eacute;e. Alors que tous les
efforts ont &eacute;t&eacute; faits pour assurer l'exactitude des
informations contenues dans ce HOWTO, les auteurs n'assument aucune
responsabilit&eacute; pour les erreurs, omissions ou dommages
r&eacute;sultant de l'utilisation des informations contenues dans
ce document.</p>
<h2><a name="s2">2. Questions ind&eacute;pendantes de
l'architecture.</a></h2>
<h2><a name="ss2.1">2.1 C&ocirc;t&eacute; noyau</a></h2>
<ol>
<li><b>Linux supporte-t-il les threads multiples ? Si je lance deux
ou plusieurs processus, seront-ils r&eacute;partis entre les
diff&eacute;rents processeurs disponibles ?</b>
<p>Oui. Les processus et les threads du noyau sont r&eacute;partis
entre les processeurs. Ceux de l'espace utilisateur ne le sont
pas.</p>
</li>
<li><b>Quelles sont les architectures SMP support&eacute;es ?</b>
<dl>
<dt><b>D'apr&egrave;s Alan Cox&nbsp;:</b></dt>
<dd>
<p>Les versions 2.0 du noyau supportent les syst&egrave;mes SMP de
type hypersparc (SS20, etc...) et Intel 486, Pentium ou machines
sup&eacute;rieurs compatible avec la norme Intel MP1.1/1.4.
<b>Richard Jelinek</b> ajoute&nbsp;: jusqu'&agrave; pr&eacute;sent,
seul des syst&egrave;mes ne comprenant pas plus de 4 processeurs
ont &eacute;t&eacute; test&eacute;s. La sp&eacute;cification MP (et
donc Linux) autorise th&eacute;oriquement jusqu'&agrave; 16
processeurs.</p>
<p>Le support SMP pour les architectures UltraSparc, SparcServer,
Alpha et PowerPC est disponible dans le 2.2.x.</p>
</dd>
<dt><b>De Ralf B&auml;chle&nbsp;:</b></dt>
<dd>
<p>MIPS, m68k et ARM ne g&egrave;rent pas le SMP; les deux derniers
ne le supporteront probablement jamais.</p>
<p>Ceci &eacute;tant, je ferai un hack pour MIPS-SMP d&egrave;s que
j'aurais une machine SMP...</p>
</dd>
</dl>
</li>
<li><b>Comment construire un noyau Linux g&eacute;rant le SMP ?</b>
<p>La plupart des distributions ne fournissent pas un noyau
adapt&eacute; au SMP. Vous devrez donc en faire un vous m&ecirc;me.
Si vous n'avez encore jamais compil&eacute; de noyau, voila une
excellente occasion d'apprendre. Expliquer comment compiler un
nouveau noyau d&eacute;passe le cadre de ce document;
pr&eacute;f&eacute;rez-vous au Linux Kernel Howto pour de plus
amples informations (<b>C. Polisher</b>). Dans la s&eacute;rie 2.0
jusqu'&agrave; la version 2.1.132 exclue du noyau,
d&eacute;commentez la ligne <code>SMP=1</code> dans le Makefile
principal (<code>/usr/src/linux/Makefile</code>).</p>
<p>Dans la version 2.2, configurez le noyau et r&eacute;pondez
"oui" &agrave; la question "Symetric multi-processing support"
(<b>Michael Elizabeth Chastain</b>).</p>
<p>Autorisez l'horloge temps r&eacute;el en cochant l'option "RTC
support" (<b>Robert G. Brown</b>). Notez qu'inclure le support RTC,
en r&eacute;alit&eacute;, pour autant que je sache, n'emp&ecirc;che
pas le probl&egrave;me connu de la d&eacute;rive de l'horloge avec
le SMP&nbsp;: activer cette fonctionnalit&eacute; avertit en cas de
lecture de l'horloge au d&eacute;marrage. Une note de <b>Richard
Jelinek</b> signale aussi qu'activer "Enhandced RTC" est
n&eacute;cessaire pour activer le deuxi&egrave;me processeur
(identification) sur certaines cartes m&egrave;re Intel
exotiques.</p>
<p>Enfin, sur plate-forme Intel, N'ACTIVEZ PAS l'option APM
(Advanced Power Management)! APM et SMP sont incompatibles et votre
syst&egrave;me plantera certainement (ou du moins probablement
<code>;)</code>) au d&eacute;marrage si APM est activ&eacute;
(<b>Jakob Oestergaard</b>). <b>Alan Cox</b> le confirme&nbsp;:
d&eacute;sactivez APM pour les machines SMP en 2.1.x. En gros le
comportement APM est ind&eacute;fini en pr&eacute;sence de
syst&egrave;mes SMP et tout peut arriver. Toujours sur plate-forme
Intel, activez "MTRR (Memory Type Range Register) support".
Certains BIOS sont d&eacute;fectueux et n'activent pas la
m&eacute;moire cache du second processeur. Le support MTRR contient
le code pour y rem&eacute;dier.</p>
<p>Vous devez reconstruire votre noyau et vos modules quand vous
passez en SMP et quand vous changez de mode SMP. N'oubliez pas
d'effectuer un <code>make modules</code> et un <code>make
modules_install</code> (<b>Alan Cox</b>).</p>
<p>Si vous obtenez des erreurs au chargement des modules, vous
n'avez probablement pas r&eacute;install&eacute; vos modules.
N&eacute;anmoins, avec quelques noyaux 2.2.x, certains ont
rapport&eacute; des probl&egrave;mes lors de la recompilation d'un
noyau SMP en noyau UP (Uni-Processeur). Afin de r&eacute;soudre
cela, sauvegardez votre fichier .config, et faites un <em>make
mrproper</em>, restaurez votre fichier <em>.config</em> et
recompilez votre noyau (<em>make dep</em>, etc...) (<b>Wade
Hampton</b>). N'oubliez pas de relancer lilo apr&egrave;s avoir
recopi&eacute; votre nouveau noyau.</p>
<p>R&eacute;capitulation :</p>
<hr>
<pre>
make config # ou menuconfig ou xconfig
make dep
make clean
make bzImage # ou ce que vous voulez
# copiez l'image du noyau manuellement puis RELANCER LILO 
# ou make lilo
make modules
make modules_install
</pre>
<hr></li>
<li><b>Comment compile-t-on un noyau Linux non-SMP ?</b>
<p>Dans la s&eacute;rie 2.0, <b>commentez</b> la ligne
<code>SMP=1</code> dans le Makefile principal
(/usr/src/linux/Makefile).</p>
<p>Pour la s&eacute;rie 2.2, configurez le noyau et r&eacute;pondez
"no" &agrave; la question "Symmetric multi-processing support"
(<b>Michael Elizabeth Chastain</b>).</p>
<p>Vous devez absolument recompiler votre noyau et ses modules pour
activer ou d&eacute;sactiver le mode SMP. N'oubliez pas de faire
<code>make modules</code>, <code>make modules_install</code> et de
relancer lilo. Voyez les notes plus haut sur les probl&egrave;mes
de configuration possibles.</p>
</li>
<li><b>Savoir si &ccedil;a marche</b>
<pre>
 cat /proc/cpuinfo 
</pre>
<p>Sortie typique (bi-PentiumII):</p>
<hr>
<pre>
processor       : 0
cpu             : 686
model           : 3
vendor_id       : GenuineIntel
[...]
bogomips        : 267.06
 
processor       : 1
cpu             : 686
model           : 3
vendor_id       : GenuineIntel
[...]
bogomips        : 267.06
</pre>
<hr></li>
<li><b>Statut de la migration du noyau vers un verrouillage fin et
le multithreading ?</b>
<p>La version 2.2 du noyau poss&egrave;de une gestion des signaux,
des interruptions et de quelque E/S &agrave; verrouillage fin (fine
grain locking). Le reste est en cour de migration. En mode SMP,
plusieurs processus peuvent &ecirc;tre ordonnanc&eacute;s
simultan&eacute;ment.</p>
<p>Les noyaux 2.3 (futur 2.4) poss&egrave;dent vraiment des verrous
noyaux fins. Dans la s&eacute;rie des noyaux 2.3 l'usage des gros
blocages noyau a tout simplement disparu. Tous les
sous-syst&egrave;mes majeurs du noyau Linux sont
compl&egrave;tement cod&eacute;s avec des threads : r&eacute;seau,
VFS, VM, ES, block/pages de cache, ordonnancement, interruptions,
signaux, etc... (<b>Ingo Molnar</b>)</p>
</li>
<li><b>Linux SMP supporte-t-il les affinit&eacute;s processeur
?</b>
<dl>
<dt><b>Noyaux standard</b></dt>
<dd>
<p>Oui et non. Il n'est pas possible de forcer l'assignation d'un
processus &agrave; un processeur sp&eacute;cifique mais
l'ordonnanceur Linux poss&egrave;de un parti-pris pour chaque
processus qui tend &agrave; conserver les processus attach&eacute;s
&agrave; un processeur sp&eacute;cifique.</p>
</dd>
<dt><b>Noyau patch&eacute;</b></dt>
<dd>
<p>Oui. Voir <a href=
"http://isunix.it.ilstu.edu/~thockin/pset/">PSET - Processor Sets
for the Linux kernel</a>:</p>
<blockquote>Ce projet a pour but d'offrir une version compatible au
niveau sources et fonctionnalit&eacute;s de pset (tel que
d&eacute;fini par SGI - partiellement retir&eacute; de leur noyau
6.4 IRIX) pour Linux. Cela autorise les utilisateurs &agrave;
d&eacute;terminer sur quel processeur ou ensemble de processeurs un
processus peut tourner. Les utilisations possibles incluent
l'assignement de thread &agrave; des processeurs distincts, la
synchronisation, la s&eacute;curit&eacute; (un processeur
d&eacute;di&eacute; &agrave; `root') et s&ucirc;rement davantage
encore.</blockquote>
<p>Nous nous sommes attach&eacute;s &agrave; concentrer toutes les
fonctionnalit&eacute;s autour de l'appel syst&egrave;me sysmp().
Cette routine accepte un certain nombre de param&egrave;tres qui
d&eacute;terminent la fonctionnalit&eacute; requise. Ces fonctions
comprennent:</p>
<ul>
<li>affecter un processus/thread &agrave; un processeur
sp&eacute;cifique;</li>
<li>interdire un processeur d'ex&eacute;cuter certains
processus;</li>
<li>emp&ecirc;cher strictement l'utilisation d'un processeur;</li>
<li>assigner &agrave; un processeur un _unique_ processus (et ses
fils);</li>
<li>information sur l'&eacute;tat du processeur;</li>
<li>cr&eacute;er/supprimer un ensemble de processeurs, sur lesquels
les processus peuvent &ecirc;tre limit&eacute;s</li>
</ul>
</dd>
</dl>
</li>
<li><b>A qui rapporter les bogues SMP ?</b>
<p>Signalez s'il vous pla&icirc;t les bogues &agrave;
<code>linux-smp@vger.rutgers.edu</code>.</p>
</li>
<li><b>A propos des performances SMP</b>
<p>Si vous voulez mesurer les performances de votre syst&egrave;me
SMP, vous pouvez essayer les tests de Cameron MacKinnon,
disponibles &agrave; <a href=
"http://www.phy.duke.edu/brahma/benchmarks.smp">http://www.phy.duke.edu/brahma/benchmarks.smp</a>.</p>
</li>
</ol>
<h2><a name="ss2.2">2.2 C&ocirc;t&eacute; utilisateur</a></h2>
<ol>
<li><b>Ai-je vraiment besoin de SMP ?</b>
<p>Si vous vous le demandez, vous n'en avez probablement pas
besoin. <code>:)</code> En g&eacute;n&eacute;ral les
syst&egrave;mes multiprocesseurs offrent de meilleurs performances
que les syst&egrave;mes monoprocesseurs, mais pour obtenir un gain
quelconque vous devez consid&eacute;rer bien d'autres facteurs que
le seul nombre de processeurs. Par exemple, sur un syst&egrave;me
donn&eacute;, si le processeur est en g&eacute;n&eacute;ral
inactif, la plupart du temps &agrave; cause d'un disque dur lent,
alors le syst&egrave;me est bloqu&eacute; au niveau des
entr&eacute;es/sorties ("input/output bound"); il ne
b&eacute;n&eacute;ficiera probablement pas de la puissance d'un
processeur suppl&eacute;mentaire. Si, d'un autre cot&eacute;, un
syst&egrave;me doit ex&eacute;cuter beaucoup de processus
simultan&eacute;ment et que l'utilisation processeur est
tr&egrave;s forte, alors vous &ecirc;tes susceptible
d'am&eacute;liorer les performances de votre syst&egrave;me. Les
disques dur SCSI peuvent &ecirc;tre tr&egrave;s efficaces en
utilisation avec plusieurs processeurs. Ils peuvent g&eacute;rer
plusieurs commandes simultan&eacute;ment sans immobiliser le
processeur (<b>C. Polisher</b>).</p>
</li>
<li><b>Obtient-on les m&ecirc;mes performances avec un biprocesseur
300 MHz qu'avec un processeur 600 MHz ?</b>
<p>Tout d&eacute;pend de l'application, mais
g&eacute;n&eacute;ralement non. Le SMP implique quelques "frais de
gestion" absents d'une machine monoprocesseur. (<b>Wade
Hampton</b>). <code>:)</code></p>
</li>
<li><b>Comment afficher les performances de plusieurs processeurs
?</b>
<p>Gr&acirc;ce &agrave; <b>Samuel S. Chessman</b>, se ici trouvent
quelques utilitaires pratiques&nbsp;:</p>
<dl>
<dt><b>Character based:</b></dt>
<dd>
<p><a href=
"http://www.cs.inf.ethz.ch/~rauch/procps.html">http://www.cs.inf.ethz.ch/~rauch/procps.html</a></p>
<p>En gros, il s'agit de procps v1.12.2 (top, ps, et. al.) et de
quelques patches pour le support SMP.</p>
<p>Pour les 2.2.x, <b>Gregory R. Warnes</b> a rendu disponible un
patch &agrave; <a href=
"http://queenbee.fhcrc.org/~warnes/procps">http://queenbee.fhcrc.org/~warnes/procps</a></p>
</dd>
<dt><b>Graphique:</b></dt>
<dd>
<p>xosview-1.5.1 supporte le SMP, les noyaux sup&eacute;rieurs au
2.1.85 (inclus) et l'entr&eacute;e cpuX dans le fichier
/proc/stat.</p>
<p>Page d'accueil officielle pour xosview&nbsp;: <a href=
"http://lore.ece.utexas.edu/~bgrayson/xosview.html">http://lore.ece.utexas.edu/~bgrayson/xosview.html</a></p>
<p>Vous ici trouverez une version patch&eacute;e par <b>Kumsup
Lee</b> pour les noyaux 2.2.p&nbsp;: <a href=
"http://www.ima.umn.edu/~klee/linux/xosview-1.6.1-5a1.tgz">http://www.ima.umn.edu/~klee/linux/xosview-1.6.1-5a1.tgz</a></p>
<p>Les diff&eacute;rents patches noyau de Forissier sont
disponibles &agrave;&nbsp;: <a href=
"http://www-isia.cma.fr/~forissie/smp_kernel_patch/">http://www-isia.cma.fr/~forissie/smp_kernel_patch/</a></p>
</dd>
</dl>
<p>N&eacute;anmoins, vous ne pouvez pas contr&ocirc;ler
l'ordonnancement de fa&ccedil;on pr&eacute;cise avec xosview car ce
dernier le perturbe (<b>H. Peter Anvin</b>).</p>
</li>
<li><b>Comment autoriser plus d'un processus lors de la compilation
du noyau ?</b>
<p>Utiliser&nbsp;:</p>
<hr>
<pre>
        # make [modules|zImage|bzImages] MAKE="make -jX"
        o&ugrave; X = nombre maximum de processus.
        Notez que &ccedil;a ne marche pas avec "make dep".
</pre>
<hr>
<p>Avec un noyau 2.2, r&eacute;f&eacute;rez vous au fichier
<code>/usr/src/linux/Documentation/smp.txt</code> pour des
instructions pr&eacute;cises.</p>
<p>Par exemple, comme lancer de multiples compilateurs autorise une
machine avec suffisamment de m&eacute;moire &agrave; utiliser le
temps processeur autrement perdu durant les d&eacute;lais
caus&eacute;s par les E/S, <code>make MAKE="make -j 2" -j 2</code>
aide r&eacute;ellement m&ecirc;me sur les machines monoprocesseurs.
(de <b>Ralf B&auml;chle</b>).</p>
</li>
<li><b>Pourquoi le temps donn&eacute; par la commande
<code>time</code> est-il erron&eacute; ?</b> (de <b>Joel
Marchand</b>)
<p>Dans la s&eacute;rie des 2.0, le r&eacute;sultat de la commande
<code>time</code> est faux. La somme utilisateur+syst&egrave;me est
juste *mais* 'l'&eacute;tendue' entre le temps utilisateur et le
temps syst&egrave;me est faux.</p>
<p>Plus pr&eacute;cis&eacute;ment&nbsp;: "tout le temps
pass&eacute; sur un processeur autre que celui de d&eacute;marrage
est comptabilis&eacute; comme temps syst&egrave;me. Si vous
chronom&eacute;trez un programme, ajoutez le temps utilisateur et
le temps syst&egrave;me. Votre mesure sera alors correcte, &agrave;
ceci pr&egrave;s qu'elle inclura aussi le temps syst&egrave;me qui
restera &agrave; d&eacute;compter" (<b>Jakob
&Oslash;stergaard</b>).</p>
<p>Ce bogue est corrig&eacute; dans les versions 2.2.</p>
</li>
</ol>
<h2><a name="ss2.3">2.3 Programmation SMP</a></h2>
<p>Section par <b>Jakob &Oslash;stergaard</b>.</p>
<p>Cette section a pour but de signaler ce qui fonctionne et ce qui
ne fonctionne pas quand il s'agit de programmer des logiciels avec
des threads pour Linux SMP.</p>
<h3>M&eacute;thodes de parall&eacute;lisation</h3>
<ol>
<li>threads POSIX (POSIX Threads)</li>
<li>PVM / MPI Message Passing Libraries</li>
<li>fork() -- Processus multiples</li>
</ol>
<p>Comme ni fork() ni les processus PVM/MPI ne partagent
g&eacute;n&eacute;ralement la m&eacute;moire, mais communiquent au
moyen d'IPC ou d'une API de messagerie, ils ne seront pas
d&eacute;crits davantage dans cette section. Ils ne sont pas
vraiment sp&eacute;cifiques &agrave; SMP, puisqu'ils sont tout
autant employ&eacute;s - sinon plus - avec des ordinateurs
monoprocesseurs et des clusters.</p>
<p>Seuls les threads POSIX fournissent des threads multiples
partageant certaines ressources telles la m&eacute;moire. Cette
propri&eacute;t&eacute; des machines SMP autorise plusieurs
processeurs &agrave; partager leur m&eacute;moire. Pour employer
deux (ou plus ;) ) processeurs avec un syst&egrave;me SMP, utilisez
une librairie de thread du noyau. Une bonne librairie <a href=
"http://pauillac.inria.fr/~xleroy/linuxthreads/">LinuxThreads, une
librairie de thread &eacute;crite par Xavier Leroy</a> est
maintenant int&eacute;gr&eacute;e avec la glibc2 (aka libc6). Les
distributions Linux r&eacute;centes int&egrave;grent toutes cette
librairie par d&eacute;faut. Vous n'avez donc pas &agrave; obtenir
un paquetage s&eacute;par&eacute; pour utiliser les threads du
noyau.</p>
<p>Il existe des mises en oeuvre des threads (et thread POSIX) de
niveau application qui ne tirent pas avantage des threads du noyau.
Ces paquetages gardent le thread dans un seul processus et,
partant, ne profitent pas du SMP. N&eacute;anmoins, elles sont
bonnes pour beaucoup d'applications et ont tendance &agrave;
&ecirc;tre plus rapides que les threads du noyau sur des
syst&egrave;mes monoprocesseurs.</p>
<p>Le multithreading n'a jamais &eacute;t&eacute; vraiment
populaire dans le monde UN*X. Pour diverses raisons, les
applications exigeant de multiples processus ou threads ont
&eacute;t&eacute; pour la plupart &eacute;crites en utilisant
fork(). Donc, avec une approche de type threads, on rencontre des
probl&egrave;mes d'incompatibilit&eacute;s et de non-adaptation aux
thread des librairies, compilateurs et d&eacute;bogueurs. GNU/Linux
n'y fait pas exception. Esp&eacute;rons que les sections qui
suivent apporteront quelques lumi&egrave;res sur ce qui est
possible et sur ce qui ne l'est pas.</p>
<h3>La librairie C</h3>
<p>Les vieilles librairies ne sont pas s&ucirc;res au niveau des
threads. Il est tr&egrave;s important que vous utilisiez la GNU
libc (<b>glibc</b>), aussi connue sous le nom de <b>libc6</b>. Vous
pouvez &eacute;videmment utiliser des versions ant&eacute;rieurs,
mais cela vous causera plus de probl&egrave;mes que mettre &agrave;
jour votre syst&egrave;me. Enfin, probablement :)</p>
<p>Si vous voulez utiliser GDB pour d&eacute;boguer vos programmes,
voyez plus bas.</p>
<h3>Langages, compilateurs et d&eacute;bogueurs</h3>
<p>Il existe de nombreux langages de programmation disponibles pour
GNU/Linux et beaucoup d'entre eux utilisent les threads d'une
mani&egrave;re ou d'une autre. Certains langages comme Ada et Java
incluent m&ecirc;me les threads dans les primitives du langage.</p>
<p>Cette section, pour l'instant, ne d&eacute;crira que le C et le
C++. Si vous avez une exp&eacute;rience de programmation SMP avec
d'autre langages, merci de nous en faire part.</p>
<p>Les compilateurs GNU C et C++, tout comme EGCS C et C++,
fonctionnent avec le support thread de la librairie C standard
(<b>glibc</b>). Il y a n&eacute;anmoins quelques
probl&egrave;mes&nbsp;:</p>
<ol>
<li>Quand vous compilez en C ou C++, incluez <b>-D_REENTRANT</b>
dans la ligne de commande du compilateur. Il est n&eacute;cessaire
d'activer certaines fonctions de gestion des erreurs telles celles
relatives &agrave; la variable errno.</li>
<li>Quand vous utilisez C++, si deux threads rencontrent des
exceptions simultan&eacute;ment, le programme retournera une erreur
de segmentation. Le compilateur g&eacute;n&egrave;re un code
d'exception inadapt&eacute; aux threads. Une mani&egrave;re de
contourner le probl&egrave;me consiste &agrave; mettre un
pthread_mutex_lock(&amp;global_exception_lock) dans le(s)
constructeur(s) de chaque classe que vous throw() et &agrave;
ins&eacute;rer le pthread_mutex_unlock(...) correspondant dans le
destructeur. Ce n'est pas tr&egrave;s beau mais &ccedil;a marche.
Cette solution a &eacute;t&eacute; fournie par <b>Markus
Ferch</b>.</li>
</ol>
<p>Le d&eacute;bogueur GNU <b>GDB</b>, &agrave; partir de la
version 4.18, devrait prendre en charge les threads correctement.
La plupart des distributions Linux comprennent une version
patch&eacute;e de gdb qui g&egrave;re les threads.</p>
<p>Il n'est pas n&eacute;cessaire de patcher la <b>glibc</b> pour
qu'elle fonctionne avec des threads. Si vous n'avez pas besoin de
d&eacute;boguer le logiciel (cela peut-&ecirc;tre vrai pour toutes
les machines qui ne sont pas d&eacute;di&eacute;es au
d&eacute;veloppement), il n'y a pas besoin de patcher la
<b>glibc</b>.</p>
<p>Notez que les core-dumps ne sont d'aucune utilit&eacute; quand
vous utilisez des threads. D'une mani&egrave;re ou d'une autre, le
core dump est attach&eacute; au thread courant et non au programme
tout entier. Aussi, pour d&eacute;boguer quoi que ce soit, faites
le depuis le d&eacute;bogueur.</p>
<p><b>Astuce&nbsp;:</b> si vous avez un thread qui perd la
t&ecirc;te, se met &agrave; utiliser 100% du temps CPU et que vous
ne voyez pas pourquoi, voici une m&eacute;thode
&eacute;l&eacute;gante de trouver ce qui se passe&nbsp;: lancez le
programme depuis la ligne de commande, sans GDB. Faites
d&eacute;railler votre thread. Utilisez <b>top</b> pour obtenir le
PID du processus. Lancez GDB tel que <b>gdb program pid</b>. GDB
s'attachera lui-m&ecirc;me au processus dont vous avez
sp&eacute;cifi&eacute; le PID et arr&ecirc;tera le thread. Vous
disposez maintenant d'une session GDB avec le thread
incrimin&eacute; et vous pouvez utiliser <b>bt</b> ou d'autres
commandes pour suivre ce qui se passe.</p>
<h3>Autres librairies</h3>
<p><b>ElectricFence&nbsp;:</b> cette librairie n'est pas s&ucirc;re
du point de vue SMP. Il devrait n&eacute;anmoins &ecirc;tre
possible de la faire fonctionner dans un environnement
thread&eacute; en ins&eacute;rant des verrous dans son code
source.</p>
<h3>Autres points concernant la programmation SMP</h3>
<ol>
<li><b>O&ugrave; puis-je trouver plus d'informations sur la
programmation parall&egrave;le ?</b>
<p>Voyez <a href=
"http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html">Linux
Parallel Processing HOWTO</a></p>
<p>Beaucoup d'informations utiles se trouvent sur <a href=
"http://yara.ecn.purdue.edu/~pplinux/">Parallel Processing using
Linux</a></p>
<p>Voyez aussi <a href=
"http://linas.org/linux/threads-faq.html">Linux Threads FAQ</a></p>
</li>
<li><b>Existe-t-il des programmes ou des librairies utilisant les
threads ?</b>
<p>Oui. Pour les programmes vous devriez regarder &agrave; <a href=
"http://www.informatik.uni-bremen.de/~hollow/mthread.html">Multithreaded
programs on linux</a> (j'adore les liens hypertextes, le saviez
vous ? <code>;)</code>)</p>
<p>En ce qui concerne les librairies&nbsp;:</p>
<dl>
<dt><b>OpenGL Mesa library</b></dt>
<dd>
<p>Gr&acirc;ce &agrave; <b>David Buccarelli</b>, <b>andreas
Schiffler</b> et <b>Emil Briggs</b>, il existe une version
multithread (&agrave; l'heure actuelle [1998-05-11], une version
fonctionne et permet d'obtenir un accroissement de 5-30% avec
certaines suites de test OpenGL). La partie multithread est
maintenant incluse dans la distribution Mesa officielle comme une
option exp&eacute;rimentale. Pour plus d'information, voyez
<a href="http://www.ssec.wisc.edu/~brianp/Mesa.html">Mesa
library</a></p>
</dd>
<dt><b>BLAS</b></dt>
<dd>
<p><a href="http://www.cs.utk.edu/~ghenry/distrib/">BLAS et FFTs
optimis&eacute;s Pentium pro pour Intel Linux</a></p>
<p>Les routines multithread BLAS ne sont pas disponibles pour
l'instant, mais une librairie multithread est pr&eacute;vue pour
1998-05-27, voir <a href=
"http://www.cs.utk.edu/~ghenry/distrib/blasnews">Blas News</a> pour
plus de d&eacute;tails.</p>
</dd>
<dt><b>The GIMP</b></dt>
<dd>
<p><b>Emil Briggs</b>, la m&ecirc;me personne qui est
impliqu&eacute;e dans la version multithread de MESA, est aussi en
train de travailler sur la version multithread des plugins de The
Gimp. Voyez <a href=
"http://nemo.physics.ncsu.edu/~briggs/gimp/index.html">http://nemo.physics.ncsu.edu/~briggs/gimp/index.html</a>
pour plus d'info.</p>
</dd>
</dl>
</li>
</ol>
<h2><a name="s3">3. Questions sp&eacute;cifiques &agrave;
l'architecture x86</a></h2>
<h2><a name="ss3.1">3.1 Pourquoi cela ne marche-t-il pas avec ma
machine ?</a></h2>
<ol>
<li><b>Puis-je utiliser le mode SMP avec un CPU Cyrix/AMD/non-Intel
?</b>
<p><b>R&eacute;ponse courte:</b> non.</p>
<p><b>R&eacute;ponse longue</b> Intel r&eacute;vendique la
propri&eacute;t&eacute; sur les plan APIC SMP, et tant qu'une
compagnie ne prend pas de licence d'Intel pour cela, ils ne peuvent
pas l'utiliser. Aucune compagnie ne l'a fait pour l'instant. Cela
peut &eacute;videment changer dans le futur. A titre anecdotique,
Cyrix et AMD adh&egrave;rent au standard non-propri&eacute;taire
OpenPIC SMP mais actuellement il n'existe pas de carte m&egrave;re
l'utilisant.</p>
</li>
<li><b>Pourquoi mon vieux Compaq ne fonctionne-t-il pas ?</b>
<p>Mettez le en mode compatibilit&eacute; MP1.1/1.4.</p>
<p>V&eacute;rifiez "Configure Hardware" -&gt; "View / Edit details"
-&gt; "Advanced mode" (F7 je pense) pour les options de
configuration "APIC mode" et cochez "full Table mode". Il s'agit
d'une recommandation officielle de Compaq (<b>Daniel
Roesen</b>).</p>
<p><b>Adrian Portelli</b>&nbsp;:</p>
<ol>
<li>Pressez F10 quand le serveur d&eacute;marre afin d'entrer dans
l'utilitaire de configuration syst&egrave;me (System Configuration
Utility)</li>
<li>Pressez Entr&eacute;e pour effacer l'&eacute;cran de
d&eacute;marrage</li>
<li>Pressez imm&eacute;diatement CTRL+A</li>
<li>Un message appara&icirc;tra vous informant que vous &ecirc;tes
maintenant en "Advanced Mode"</li>
<li>S&eacute;lectionnez ensuite "Configure Hardware" -&gt; "View /
Edit details"</li>
<li>Vous verrez alors les r&eacute;glages avanc&eacute;s
(m&eacute;lang&eacute;s avec les r&eacute;glages ordinaires)</li>
<li>Descendez jusqu'au "APIC Mode" et s&eacute;lectionnez alors
"Fully Mapped"</li>
<li>Sauvegardez les changements et red&eacute;marrez</li>
</ol>
</li>
<li><b>Pourquoi mon ALR ne fonctionne-t-il pas ?</b>
<p>De <b>Robert Hyatt</b>: ALR Revolution quad-6 semble &agrave;
peu pr&egrave;s s&ucirc;re, alors que quelques machines Revolution
quad plus vieilles sans processeurs P6 ne semble pas
"fiables"...</p>
</li>
<li><b>Pourquoi ma machine SMP est-elle si lente ?</b> ou
<b>Pourquoi un processeur montre-t-il une valeur bogomips basse et
pas l'autre ?</b>
<p>De <b>Alan Cox</b>: si un de vos processeurs rapporte une valeur
bogomips tr&egrave;s basse, son cache n'est pas activ&eacute;.
Votre vendeur vous &agrave; probablement fournis un BIOS
bogu&eacute;. Obtenez un patch pour contourner cela ou mieux
retournez la &agrave; votre vendeur et achetez une carte
m&egrave;re chez un fournisseur comp&eacute;tent.</p>
<p>Un noyau 2.0 (&gt; 2.0.36) contient un patch MTRR qui devrait
r&eacute;soudre ce probl&egrave;me (s&eacute;lectionnez l'option
"handle buggy SMP BIOSes with bad MTRR setup" dans le menu "General
setup").</p>
<p>Je pense que les BIOS SMP bogu&eacute;s sont pris en charge
automatiquement dans les derniers noyaux 2.2.</p>
</li>
<li><b>J'ai entendu dire que des machines IBM avaient des
probl&egrave;mes</b>
<p>Certaines machines IBM poss&egrave;dent le bloc BIOS MP1.4 dans
l'EBDA. C'est autoris&eacute; mais pas support&eacute; en dessous
des noyaux 2.2.</p>
<p>Il y a une vieille machine IBM SMP bas&eacute;e sur des 486SLC.
Linux/SMP requiert un support FPU mat&eacute;riel.</p>
</li>
<li><b>Les sp&eacute;cification MP 1.4 pr&eacute;sentent-elles un
quelconque avantage vis-&agrave;-vis des sp&eacute;cifications 1.1
?</b>
<p>Non (selon Alan <code>:)</code> ), 1.4 est juste une
sp&eacute;cification plus stricte de 1.1.</p>
</li>
<li><b>Pourquoi l'horloge d&eacute;rive-t-elle si rapidement quand
la machine fonctionne en mode SMP ?</b>
<p>Il s'agit d'un probl&egrave;me connu avec la gestion des IRQ et
les blocages noyau longs dans la s&eacute;rie 2.0 des noyaux.
Pensez &agrave; mettre &agrave; jour votre syst&egrave;me vers un
2.2 plus r&eacute;cent.</p>
<p>De <b>Jakob Oestergaard</b>: ou pensez &agrave; utiliser xntpd.
Cela devrait garder votre horloge &agrave; l'heure. Je pense avoir
entendu qu'activer RTC dans le noyau corrigeait aussi le
probl&egrave;me de d&eacute;rive de l'horloge. &Ccedil;a a
march&eacute; pour moi, mais j'ignore si cela est
g&eacute;n&eacute;ral ou si j'ai juste &eacute;t&eacute; chanceux
!</p>
<p>Certaines corrections du noyau dans les derniers 2.2.x devraient
r&eacute;soudre ce probl&egrave;me.</p>
</li>
<li><b>Pourquoi mes processeurs sont-ils num&eacute;rot&eacute;s 0
et 2 au lieu de 0 et 1 (ou autre num&eacute;rotation bizarre) ?</b>
<p>Le num&eacute;ro du processeur est fix&eacute; par le fabricant
de la carte m&egrave;re et ne veut absolument rien dire. Ignorez
le.</p>
</li>
<li><b>Mon syst&egrave;me quadruple Xeon plante d&egrave;s qu'il a
d&eacute;compress&eacute; le noyau</b>
<p>(<b>Doug Ledford</b>) Essayez de recompiler LILO avec le support
LARGE_EBDA et faites attention &agrave; bien toujours utiliser
bzImage quand vous compilez le noyau. Cela semble avoir
r&eacute;solu le probl&egrave;me de plantage au d&eacute;marrage
ici sur une carte m&egrave;re Intel multi-Xeon. Notez cependant que
cela semble aussi affecter LILO en ceci que l'option root= ne
fonctionne plus. Faites donc bien attention d'avoir appliqu&eacute;
'rdev' &agrave; votre noyau au moment o&ugrave; vous lancerez LILO
afin d'&ecirc;tre sur que votre noyau charge correctement le
syst&egrave;me de fichier racine au d&eacute;marrage.</p>
<p>(<b>Robert M. Hyatt</b>) Avec 3 processeurs, avez-vous un
terminateur dans le 4&egrave;me emplacement ?</p>
</li>
<li><b>Durant le d&eacute;marrage la machine plante en signalant un
probl&egrave;me IOAPIC</b>
<p>Essayez l'option de d&eacute;marrage "noapic" (<b>John
Aldrich</b>) et/ou "reboot=bios" (<b>Terry Shull</b>).</p>
</li>
<li><b>Mon syst&egrave;me se bloque lors de trafic NFS intense</b>
<p>Essayez le dernier noyau 2.2.x et le patch knfsd. Cela est en
cours d'investigation. (<b>Wade Hampton</b>)</p>
</li>
<li><b>Mon syst&egrave;me bloque sans message oops</b>
<p>Si vous utilisez les noyaux 2.2.11 ou 2.2.12,
r&eacute;cup&eacute;rez le dernier noyau. Par exemple 2.2.13
poss&egrave;de de nombreuses corrections SMP. Plusieurs personnes
ont rapport&eacute; ces noyaux comme instables pour le SMP. Ces
m&ecirc;mes noyaux peuvent avoir des probl&egrave;mes NFS qui
provoqueraient des blocages. Aussi, utilisez une console
s&eacute;rie pour capturer vos messages oops. (<b>Wade
Hampton</b>)</p>
<p>Si le probl&egrave;me persiste (et que les suggestions sur cette
liste n'ont pas aid&eacute; davantage), vous devriez alors essayer
les derniers noyaux 2.3. Ils ont un code SMP/APIC plus bavard (et
plus robuste) et un code de pr&eacute;vention contre les blocages
durs qui produit des oops plus significatifs au lieu de planter en
silence (<b>Ingo Molnar</b>).</p>
<p>(<b>Osamu Aoki</b>) Vous DEVEZ aussi <em>d&eacute;sactiver</em>
toutes les fonctionnalit&eacute;s du BIOS li&eacute;es &agrave;
l'&eacute;conomie d'&eacute;nergie. Exemple d'une bonne
configuration (Dual Celeron 466 Abit BP6)&nbsp;:</p>
<hr>
<pre>
 POWER MANAGEMENT SETUP.
   ACPI:              Disabled
   POWER MANAGEMENT:  Disabled
   PM CONTROL by APM: No
</pre>
<hr>
Si les fonctions d'&eacute;conomie d'&eacute;nergie sont
activ&eacute;es, des plantages al&eacute;atoires peuvent se
produire</li>
<li><b>D&eacute;boguer des blocages</b>
<p>(item par <b>Wade Hampton</b>)</p>
<p>Un bon moyen de d&eacute;boguer les blocages consiste &agrave;
se procurer le patch ikd de Andrea Arcangeli: <a href=
"ftp://ftp.suse.com/pub/people/andrea/kernel-patches/">ftp://ftp.suse.com/pub/people/andrea/kernel-patches</a></p>
<p>Il y a plusieurs options de d&eacute;bogage. N'utilisez PAS
l'option de blocage logicielle ! Pour des machines SMP
r&eacute;centes, activez l'option kernel debugging et ensuite
l'option NMI oopser. Afin de v&eacute;rifier que le NMI oopser
fonctionne, apr&egrave;s avoir d&eacute;marr&eacute; avec votre
nouveau noyau, ex&eacute;cutez un <code>/cat
/proc/interrupts</code> et v&eacute;rifiez que vous obtenez des
NMI. Quand la machine se bloque, vous devriez obtenir un oops.</p>
<p>Vous pouvez aussi essayer l'option %eip. Elle autorise le noyau
&agrave; &eacute;crire sur la console l'adresse %eip &agrave;
chaque fois qu'une fonction du noyau est appel&eacute;e. Quand la
machine se bloque, &eacute;crivez sur un papier la premi&egrave;re
colonne ordonn&eacute;e selon la seconde colonne et cherchez
ensuite les adresses dans le fichier System.map. Ca ne marche qu'en
mode console.</p>
<p>Notez que l'utilisation d'une console s&eacute;rie facilite
grandement le d&eacute;bogage des blocages noyau, qu'ils soient SMP
ou non !</p>
</li>
<li><b>Messages "APIC error interrupt on CPU#n, should never
happen" dans les logs</b>
<p>Un message comme:</p>
<hr>
<pre>
APIC error interrupt on CPU#0, should never happen.
... APIC ESR0: 00000002
... APIC ESR1: 00000000
</pre>
<hr>
indique la r&eacute;ception d'une erreur de calcul de code
d'int&eacute;grit&eacute;. Linux ne peut en &ecirc;tre responsable
car la partie calcul des messages APIC est compl&egrave;tement
mat&eacute;rielle. Il peut s'agir d'un probl&egrave;me
mat&eacute;riel marginal. Tant que vous ne percevez pas
d'instabilit&eacute;, ils ne sont pas probl&eacute;matiques. Les
messages APIC sont renvoy&eacute;s jusqu'&agrave; ce qu'il soient
d&eacute;livr&eacute;s (<b>Ingo Molnar</b>).</li>
</ol>
<h2><a name="ss3.2">3.2 Causes possibles de plantages</a></h2>
<p>Dans cette section vous trouverez quelques information sur les
causes <b>possibles</b> de plantage sur une machine SMP (merci
&agrave; <b>Jakob &Oslash;stergaard</b> pour cette partie). Autant
que je sache (David), les probl&egrave;mes &eacute;voqu&eacute;s
ici sont sp&eacute;cifiques aux plate-formes Intel.</p>
<ul>
<li><b>Probl&egrave;mes de refroidissement</b>
<p>De <b>Ralf B&auml;chle</b>: (concernant la taille des
bo&icirc;tiers et les ventilateurs) il est important que l'air
circule. Bien s&ucirc;r, ce n'est pas possible quand toutes sortes
d'obstacles, tels des c&acirc;bles, l'en emp&ecirc;chent dans des
bo&icirc;tiers par trop exigus. D'un autre c&ocirc;t&eacute;, j'ai
vu des bo&icirc;tiers surdimensionn&eacute;s provoquer de gros
probl&egrave;mes. Il existe des bo&icirc;tiers au format tour sur
le march&eacute; qui s'av&egrave;rent actuellement pire &agrave;
rafra&icirc;chir que des bo&icirc;tiers au format bureau. En bref,
la meilleure chose &agrave; faire est de penser &agrave;
l'a&eacute;rodynamique dans le bo&icirc;tier. Des bo&icirc;tiers
suppl&eacute;mentaires pour les p&eacute;riph&eacute;riques
d&eacute;gageant de la chaleur sont &eacute;galement utiles.</p>
<p>Bien s&ucirc;r vous pouvez toujours aller chez Radio Shack (ou
similaire) et acheter un ventilateur. Vous pouvez utiliser
lm_sensor pour surveiller la temp&eacute;rature des processeurs PII
et PIII. Cela peut vous aider &agrave; d&eacute;terminer si la
chaleur est un probl&egrave;me ou non (<b>Wade Hampton</b>).</p>
</li>
<li><b>Mauvaise barrette de m&eacute;moire</b>
<p>N'achetez pas de la RAM bon march&eacute; et ne m&eacute;langez
pas des barrettes diff&eacute;rente sur une m&ecirc;me carte
m&egrave;re.</p>
<p>Les cartes m&egrave;res Tyan sont tout particuli&egrave;rement
connues pour leur susceptibilit&eacute; sur la vitesse de la RAM
(voir le paragraphe ci-dessous sur Tyan pour une solution
&eacute;ventuelle).</p>
<p>Il y a eu des rapports sur des m&eacute;moire RAM PC 100
&agrave; 10ns vendues avec des cartes m&egrave;res dont le
processeur avait vraiment besoin de RAM &agrave; 8ns (<b>Wade
Hampton</b>).</p>
</li>
<li><b>Mauvaise combinaison de processeurs de fr&eacute;quences
diff&eacute;rentes</b>
<p>V&eacute;rifiez <code>/proc/cpuinfo</code> pour voir si vos
processeurs fonctionnent &agrave; la m&ecirc;me cadence.</p>
</li>
<li><b>Si votre syst&egrave;me est instable, SURTOUT ne
l'overclockez pas !</b>
<p>D'ailleurs, m&ecirc;me s'il est stable, ne le surcadencez
pas.</p>
<p>De <b>Ralf B&auml;chle</b>: le surcadencement pose des
probl&egrave;mes tr&egrave;s subtils. J'ai un bel exemple: une de
mes vieilles machines surcadenc&eacute;es commet des erreurs de
calcul pour quelques pixels d'une fractale de 640 X 400. Le
probl&egrave;me est seulement visible quand on les compare en
utilisant des outils. Le mieux est donc de ne <em>jamais, never,
nuncas, niemals</em> surcadencer.</p>
</li>
<li><b>Noyaux 2.0.x et Ethernet rapide</b> (de <b>Robert G.
Brown</b>)
<p>Les noyaux 2.0.x sur des syst&egrave;mes Ethernet rapide et
hautes performances ont des probl&egrave;mes significatifs (et
connus) avec les conditions de course/inter-blocage (race/deadlock)
dans la prise en charge des interruptions r&eacute;seau.</p>
<p>La solution consiste &agrave; obtenir la derni&egrave;re version
des pilotes 100BT en cours de d&eacute;veloppement &agrave;
<a href="http://cesdis.gsfc.nasa.gov/linux/drivers/">CESDIS Linux
Ethernet device drivers site</a> (ceux qui sont au point
d&eacute;finissent SMPCHECK).</p>
</li>
<li><b>Un bogue dans le chipset 440FX</b> (de <b>Emil Briggs</b>)
<p>Si votre syst&egrave;me utilise le chipset 440FX alors les
probl&egrave;mes de blocage sont peut-&ecirc;tre d&ucirc;s &agrave;
une erreur (document&eacute;e) du chipset. En voici la
r&eacute;f&eacute;rence:</p>
<p>Intel 440FX PCIset 82441FX (PMC) et 82442FX (DBX) Specification
Update. pg. 13</p>
<p><a href=
"http://www.intel.com/design/pcisets/specupdt/297654.htm">http://www.intel.com/design/pcisets/specupdt/297654.htm</a></p>
<p>Le probl&egrave;me peut se r&eacute;soudre avec un contournement
par le BIOS (ou un patch du noyau). David Wragg a &eacute;crit un
patch qui est inclus dans le patch MTRR de Richard Gooch's. Pour
plus d'informations ainsi qu'un descriptif de solution, voyez
ici:</p>
<p><a href=
"http://nemo.physics.ncsu.edu/~briggs/vfix.html">http://nemo.physics.ncsu.edu/~briggs/vfix.html</a></p>
</li>
<li><b>NE PAS lancer emm386.exe avant de d&eacute;marrer Linux
SMP</b>
<p>De <b>Mark Duguid</b>, R&egrave;gle implicite #1 avec une carte
m&egrave;re W6LI. <code>;)</code></p>
</li>
<li><b>Si la machine red&eacute;marre/g&egrave;le au bout d'un
moment, il peut y avoir deux bonne raisons li&eacute;es &agrave; la
m&eacute;moire et au BIOS</b> (<b>Jakob &Oslash;stergaard</b>)
<ul>
<li>Si le BIOS est muni de r&eacute;glages comme "memory hole at
16M" et/ou "OS/2 memory &gt; 64MB", essayez de les
d&eacute;sactiver tous les deux. Linux ne r&eacute;agit pas
toujours tr&egrave;s bien &agrave; ces deux options.</li>
<li>Si vous avez plus de 64 MB de m&eacute;moire dans votre
machine, et que vous sp&eacute;cifiez manuellement le chiffre exact
dans la configuration de LILO, vous devriez sp&eacute;cifier 1 MB
de moins que ce vous avez r&eacute;ellement dans votre machine. Si
vous avez 128 MB, votre ligne dans votre lilo.conf ressemble
&agrave;: append="mem=127M"</li>
</ul>
</li>
<li><b>Soyez avertis des probl&egrave;mes concernant les IRQ</b>
<p>Parfois, certaines cartes ne sont pas reconnues ou peuvent
d&eacute;clencher des conflits d'IRQ. Essayez de mettre les cartes
sur des slots diff&eacute;rents et si possible de les assigner
&agrave; des IRQ diff&eacute;rentes.</p>
<p>Contribution de <b>hASCII</b>&nbsp;: enlever la ligne
"append="hisax=9,2,3" dans lilo.conf autorisant &agrave; utiliser
un noyau de la s&eacute;rie 2.1.xx avec le support ISDN + Hisax
activ&eacute;. Les noyaux de la s&eacute;rie 2.0.xx ne posent pas
ce genre de probl&egrave;me.</p>
<p>Essayez aussi de configurer les option de configuration du BIOS
comme "MP 1.4 mode" ou "route PCI interrupts through IOAPIC" ou "OS
Type" configur&eacute; ni pour DOS ni pour Novell (<b>Ingo
Molnar</b>).</p>
</li>
<li><b>Utilisation simultan&eacute;e du lecteur de disquettes de la
sortie son</b>
<p>Si vous bloquez alors que vous essayez d'acc&eacute;der au
lecteur de disquettes (par exemple pendant que du son est
jou&eacute;) vous devriez peut-&ecirc;tre &eacute;diter le fichier
drivers/pci/quirks.c et positionner <code>/int isa_dma_bridge_buggy
= 1;</code>. Le probl&egrave;me se manifeste avec mon Dell WS400
dual PII/300, 2.2.x, SMP (<b>Wade Hampton</b>).</p>
</li>
</ul>
<h2><a name="ss3.3">3.3 Informations sp&eacute;cifiques aux cartes
m&egrave;res</a></h2>
<p><em>Notez</em> que des informations plus pr&eacute;cises peuvent
&ecirc;tre trouv&eacute;es avec la liste des <a href=
"http://www.nlug.org/smp/">Cartes m&egrave;re suppos&eacute;es
fonctionner sous Linux SMP</a></p>
<h3>Cartes m&egrave;res avec des probl&egrave;mes connus</h3>
<ul>
<li>Aucune pour l'instant</li>
</ul>
<h2><a name="ss3.4">3.4 Machine SMP Linux &agrave; bas prix
(machine double Celeron)</a></h2>
<p>(<b>St&eacute;phane &Eacute;colivet</b>)</p>
<p>Les machines SMP Linux les moins ch&egrave;res avec des
processeurs disponibles de nos jours sont les syst&egrave;mes
double Celeron. Un tel syst&egrave;me n'est pas officiellement
possible selon Intel. On a int&eacute;r&ecirc;t &agrave;
v&eacute;rifier qu'il s'agit bien de Celerons de seconde
g&eacute;n&eacute;ration, ceux avec 128 Kb de cache L2.</p>
<h3>Est-il possible de faire fonctionner une machine double Celeron
?</h3>
<p><b>R&eacute;ponse officielle d'Intel&nbsp;:</b> non, le Celeron
ne peut pas fonctionner en mode SMP.</p>
<p><b>R&eacute;ponse pratique&nbsp;:</b> c'est possible, mais cela
demande une modification mat&eacute;rielle pour les processeurs
Slot 1. La manipulation est d&eacute;crite par Tomohiro Kawada sur
sa page <a href=
"http://kikumaru.w-w.ne.jp/pc/celeron/index_e.html">Dual Celeron
System</a>. Naturellement, de telles modifications annulent la
garantie... Certaines versions du processeur Celeron sont aussi
disponibles au format Socket 370. Dans ce cas, l'alt&eacute;ration
peut-&ecirc;tre faite sur l'adaptateur Socket 370 &agrave; Slot 1
qui peut m&ecirc;me &ecirc;tre vendu pr&eacute;-cabl&eacute; pour
une utilisation SMP (<b>Andy Poling</b>, <b>Hans - Erik
Skyttberg</b>, <b>James Beard</b>).</p>
<p>Il existe aussi une carte m&egrave;re (ABIT BP6) autorisant
l'insertion de deux Celerons dans le format Socket 370 (<b>Martijn
Kruithof</b>, <b>Ryan McCue</b>), l'ABIT Computer BP6
v&eacute;rifi&eacute;e, test&eacute;e et support&eacute;e sous
linux avec deux ppga socket 370 (<b>Andre Hedrick</b>).</p>
<h3>Comment Linux se comporte-t-il sur les syst&egrave;mes double
Celeron ?</h3>
<p>Bien, merci.</p>
<h3>Les processeurs Celeron sont r&eacute;put&eacute;s pour
&ecirc;tre facilement surcaden&ccedil;able. Qu'en est-il des
syst&egrave;mes doubles Celeron ?</h3>
<p>Cela <b>peut</b> marcher. N&eacute;anmoins, surcadencer un tel
syst&egrave;me n'est pas aussi facile que pour un monoprocesseur.
Ce n'est franchement pas une bonne id&eacute;e pour un
syst&egrave;me de production. Pour une utilisation personnelle, des
syst&egrave;mes double Celeron 300 A fonctionnant parfaitement
&agrave; 450 MHz ont &eacute;t&eacute; signal&eacute;s (<b>de
nombreuses personnes</b>).</p>
<h3>Et un syst&egrave;me quadruple Celeron ?</h3>
<p>C'est impossible. Les processeurs Celerons poss&egrave;dent
&agrave; peu pr&egrave;s les m&ecirc;mes fonctionnalit&eacute;s
qu'un Pentium II basique. Si vous voulez plus de deux processeur
dans votre syst&egrave;me, vous devriez regarder du
c&ocirc;t&eacute; des machines &agrave; base de Pentium Pro,
Pentium II Xeon ou Pentium III (?).</p>
<h3>Pourquoi ne pas m&eacute;langer Celeron et Pentium II ?</h3>
<p>Un syst&egrave;me utilisant un Celeron
"r&eacute;-autoris&eacute;" et un Pentium II &agrave; la m&ecirc;me
cadence <b>peut th&eacute;oriquement</b> fonctionner.</p>
<p><b>Alexandre Charbey</b> &agrave; fabriqu&eacute; un tel
syst&egrave;me:</p>
<ul>
<li>Carte m&egrave;re Asus P2B-D, proc 1: Celeron 366, proc 2:
Pentium II 400@266</li>
<li>Les fr&eacute;quences de bus 66Mhz et 75Mhz furent
fonctionnelles</li>
<li>Le processeur le plus rapide (dans ce cas le Celeron) doit
&ecirc;tre plac&eacute; sur le deuxi&egrave;me slot. Inverser les
processeurs (le plus rapide en premier) conduit rapidement &agrave;
un &eacute;chec.</li>
</ul>
<h2><a name="s4">4. Questions sp&eacute;cifiques &agrave;
l'architecture Sparc</a></h2>
<h2><a name="ss4.1">4.1 Quellles sont les machines Sparc
support&eacute;es ?</a></h2>
<p>Citation de la page web <a href=
"http://ultra.linux.cz/">UltraLinux</a> (syst&egrave;mes SMP
seulement):</p>
<ul>
<li>Workstation UltraSPARC &agrave; base de PCI: Ultra60,
Ultra450</li>
<li>Serveurs UltraSPARC &agrave; base de SBUS: Enterprise 1, 2,
150</li>
<li>Serveurs large UltraSPARC &agrave; base de SBUS: Enterprise
3000, 4000, 5000, 6000, 10000</li>
<li>Serveurs UltraSPARC &agrave; base de PCI : Enterprise 250,
450</li>
<li>Machines SPARC sun4m SMP (<b>Anton Blanchard</b>)</li>
</ul>
<p>UltraLinux a fonctionn&eacute; sur une machine de 14 processeurs
(voir la <a href="http://lwn.net/1998/1210/a/dm-sparc.html">sortie
dmesg</a>).</p>
<h2><a name="ss4.2">4.2 Probl&egrave;mes sp&eacute;cifiques au
support SMP Sparc</a></h2>
<p>(<b>David Miller</b>) Il ne devrait pas y avoir
d'inqui&eacute;tudes.</p>
<p>Le seul probl&egrave;me connu et que nous n'avons pas
l'intention de corriger, consiste en ce qu'un noyau SMP
compil&eacute; pour des syst&egrave;mes 32bits (ie. non-ultrasparc)
ne fonctionnera pas sur les syst&egrave;mes sun4c.</p>
<h2><a name="ss4.3">4.3 Limites SMP sp&eacute;cifiques au noyau
courant (2.2)</a></h2>
<p><b>David Miller</b>: il y a un bug dans le fichier
d'en-t&ecirc;te include/linux/tasks.h, cela n&eacute;cessite de
d&eacute;finir NR_CPUS &agrave; 64 sur UltraSparc puisqu'il s'agit
de la limite sup&eacute;rieure pour le mat&eacute;riel que nous
supportons :-)</p>
<h2><a name="s5">5. Questions sp&eacute;cifiques &agrave;
l'architecture PowerPC</a></h2>
<h2><a name="ss5.1">5.1 Quellles sont les machines PPC
support&eacute;es ?</a></h2>
<ul>
<li>Cartes m&egrave;res PowerSurge (incluant UMAX s900)</li>
<li>PowerMac</li>
<li>Motorola MTX&nbsp;: support en cours de d&eacute;veloppement.
Les patches ne sont pas encore inclus dans le noyau principal
(<b>Troy Benjegerdes</b>).</li>
</ul>
<p>(<b>Cort Dougan</b>) Non support&eacute;: Syst&egrave;mes PPC
RS/6000</p>
<h2><a name="ss5.2">5.2 Probl&egrave;mes sp&eacute;cifiques
concernant le support SMP PPC</a></h2>
<p>Rien. Compilation SMP normale (voir plus haut). Comme
d'habitude, soyez attentif. Les modules sont sp&eacute;cifiques
pour UP ou pour SMP. Recompilez les (<b>Paul Mackerras</b>).</p>
<h2><a name="s6">6. Questions sp&eacute;cifiques &agrave;
l'architecture Alpha</a></h2>
<h2><a name="ss6.1">6.1 Quelles sont les machines Alpha
support&eacute;es ?</a></h2>
<p><b>Geerten Kuiper</b>&nbsp;: le SMP marche pour la plupart des
serveurs AXP, sinon pour tous.</p>
<p><b>Jay A Estabrook</b>&nbsp;: le SMP semble fonctionner sur la
plupart de nos machines [Compaq] avec deux processeurs ou plus. La
liste de celles-ci comprend&nbsp;:</p>
<ul>
<li>AS2000/2100 (SABLE)</li>
<li>AS4000/4100 (RAWHIDE)</li>
<li>DS20 (DP264)</li>
</ul>
<p>En sont exclus&nbsp;:</p>
<ul>
<li>AS2100A (LYNX)</li>
<li>TurboLaser bigboys (8200/8400)</li>
</ul>
<h2><a name="ss6.2">6.2 Probl&egrave;mes sp&eacute;cifiques au
support SMP Alpha</a></h2>
<p>Aucun (vraiment ? :-) ).</p>
<h2><a name="s7">7. Pointeurs utiles</a></h2>
<h2><a name="ss7.1">7.1 Divers</a></h2>
<ul>
<li><a href="http://yara.ecn.purdue.edu/~pplinux/">Parallel
Processing en utilisant Linux</a></li>
<li><a href=
"http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html">Linux
Parallel Processing HOWTO</a></li>
<li><b>(d&eacute;pass&eacute;)</b> <a href=
"http://www.uk.linux.org/SMP/title.html">Page d'acceuille SMP
Linux</a></li>
<li>linux-smp mailing list
<p>Pour <b>souscrire</b>, envoyez <code>subscribe linux-smp</code>
dans le corps du message &agrave; <a href=
"mailto:majordomo@vger.rutgers.edu">majordomo@vger.rutgers.edu</a></p>
<p>Pour se <b>d&eacute;sinscrire</b>, envoyez <code>unsubscribe
linux-smp</code> dans le corps du message &agrave; <a href=
"mailto:majordomo@vger.rutgers.edu">majordomo@vger.rutgers.edu</a></p>
<p><a href="http://www.linuxhq.com/lnxlists/linux-smp/">Archives
Linux SMP</a></p>
<p><a href=
"http://www.progressive-comp.com/Lists/?l=linux-smp&amp;r=1&amp;w=2#linux-smp">
Archives Linux SMP &agrave; progressive-comp.com</a></p>
</li>
<li><a href="http://pauillac.inria.fr/~xleroy/linuxthreads/">La
librairie pthread de Xavier Leroy</a></li>
<li><a href="http://www.nlug.org/smp/">Les Cartes m&egrave;res qui
para&icirc;t-il marche avec Linux SMP</a></li>
<li><a href=
"http://www.cs.inf.ethz.ch/~rauch/procps.html">procps</a></li>
<li><a href="http://queenbee.fhcrc.org/~warnes/procps">patch pour
procps pour 2.2.x</a></li>
<li><a href=
"http://lore.ece.utexas.edu/~bgrayson/xosview.html">xosview</a></li>
<li><a href=
"http://www.ima.umn.edu/~klee/linux/xosview-1.6.1-5a1.tgz">xosview
pour 2.2.x</a></li>
<li><a href=
"http://www.phy.duke.edu/brahma/benchmarks.smp">Performance SMP de
Linux</a></li>
<li><a href="http://cesdis.gsfc.nasa.gov/linux/drivers/">CESDIS
Linux Ethernet device drivers site</a></li>
<li><a href=
"http://kikumaru.w-w.ne.jp/pc/celeron/index_e.html">Syst&egrave;mes
Double Celeron</a></li>
</ul>
<h2><a name="ss7.2">7.2 Programmes et librairies
multithread</a></h2>
<ul>
<li><a href="http://linas.org/linux/threads-faq.html">Linux Threads
FAQ</a></li>
<li><a href=
"http://www.informatik.uni-bremen.de/~hollow/mthread.html">Programmes
multithread sur linux</a></li>
<li><a href="http://www.cs.utk.edu/~ghenry/distrib/">BLAS et FFTs
optimis&eacute; Pentium pro pour Intel Linux</a> (pas disponible
tout de suite, mais une librairie double processeurs est
pr&eacute;vue pour le 5/27/98. Pour plus de d&eacute;tails, voir
<a href="http://www.cs.utk.edu/~ghenry/distrib/blasnews">Blas
News</a>).</li>
<li><a href="http://www.ssec.wisc.edu/~brianp/Mesa.html">Librairie
Mesa</a> (support multithread exp&eacute;rimental)</li>
<li><a href=
"http://nemo.physics.ncsu.edu/~briggs/gimp/index.html">Plugins
parall&egrave;les pour The GIMP</a></li>
</ul>
<h2><a name="ss7.3">7.3 Patches sp&eacute;cifiques SMP</a></h2>
<ul>
<li><a href=
"http://www-isia.cma.fr/~forissie/smp_kernel_patch/">Patches noyau
de Forissier</a></li>
<li><a href="http://nemo.physics.ncsu.edu/~briggs/vfix.html">Patch
pour un bug dans le chipset 440FX</a></li>
<li><a href=
"http://www.atnf.csiro.au/~rgooch/kernel-patches.html">Patch MTRR
(derni&egrave;re version: 1.9)</a></li>
<li><a href="http://isunix.it.ilstu.edu/~thockin/pset/">PSET -
Processor Sets for the Linux kernel</a></li>
<li><a href="http://www.redhat.com/~mingo/">Patches SMP de Ingo
Molnar</a> (pour les esth&egrave;tes seulement, s'il vous
pla&icirc;t lisez linux-smp@vger.rutgers.edu)</li>
</ul>
<h2><a name="ss7.4">7.4 Compilateurs
parall&egrave;liseurs/optimiseurs pour les machines 586/686
(<b>Sumit Roy</b>)</a></h2>
<ul>
<li><a href="http://www.goof.com/pcg/">Pentium Compiler Group</a>
cr&eacute;ateur de pgcc</li>
<li><a href="http://www.absoft.com/">Absoft</a> compilateur Fortran
90 et Fortran 77</li>
<li><a href="http://www.pgroup.com/">The Portland Group, Inc.</a>
supporte le standard <a href="http://www.openmp.org">OpenMP</a>
pour la parall&egrave;lisation Fortran sur Linux</li>
<li><a href="http://www.psrv.com/">Pacific-Sierra Research
Corporation</a> contient un compilateur gratuit F90 pour Linux et
aussi des compilateurs parall&egrave;lisant pour SMP Linux</li>
<li><a href="http://s006.infomall.org/index.html">Applied Parallel
Research</a> inclut actuellement des compilateurs
parall&egrave;lisant pour NT</li>
<li><a href="http://www.kai.com">KAI</a> offre un compilateur C++
pour Linux qui inclut OpenMPI. Il s'appelle Guide_OpenMP.
Information &agrave; <a href=
"http://www.kai.com/parallel/kappro/guide">http://www.kai.com/parallel/kappro/guide</a>
(<b>Gero Wedemann</b>).</li>
</ul>
<h2><a name="s8">8. Glossary</a></h2>
<ul>
<li><b>SMP</b> Multi-Processeur Symm&eacute;trique</li>
<li><b>APIC</b> Contr&ocirc;leur d'Interruptions Programmable
Avanc&eacute;</li>
<li><b>thread</b> Un thread est l'activit&eacute; processeur dans
un processus. Un m&ecirc;me processus peut avoir de multiples
thread. Ces threads partagent l'espace adresse du processus et
peuvent donc par-l&agrave; partager des donn&eacute;es.</li>
<li><b>pthread</b> Posix thread, threads d&eacute;finie par le
standard Posix.</li>
<li><b>APM</b> Gestion avanc&eacute;e de l'&eacute;nergie</li>
</ul>
<h2><a name="s9">9. Quoi de neuf ?</a></h2>
<dl>
<dt><b>v1.9, 13 janvier 2000</b></dt>
<dd>
<ul>
<li>Rappel, d&eacute;sactivation de toutes les fonctions de gestion
d'&eacute;nergie du BIOS (<b>Osamu Aoki</b>)</li>
<li>Explication sur la mani&egrave;re d'acc&eacute;der au mode de
configuration avanc&eacute; du serveur Compaq (<b>Adrian
Portelli</b>)</li>
</ul>
</dd>
<dt><b>v1.8, 8 novembre 1999</b></dt>
<dd>
<ul>
<li>La carte m&egrave;re quadruple celeron &eacute;tait un canular,
restauration de l'ancien paragraphe (<b>Simen Timian
Thoresen</b>)</li>
</ul>
</dd>
<dt><b>v1.7, 6 novembre 1999</b></dt>
<dd>
<ul>
<li>Nouvelle introduction (<b>C. Polisher</b> aka cp)</li>
<li>De nombreuses corrections typographiques et grammaticales
(cp)</li>
<li>Paragraphe d'introduction sur la compilation du noyau (cp)</li>
<li>Paragraphe d'introduction sur les besoins SMP (cp)</li>
<li>R&eacute;f&eacute;rence sur KAI un compilateur optimis&eacute;
(<b>Gero Wedemann</b>)</li>
<li>Les cartes m&egrave;res quadruple celeron existent (<b>Jeffrey
H. Ingber</b>)</li>
</ul>
</dd>
<dt><b>v1.6, 21 octobre 1999</b></dt>
<dd>
<ul>
<li>Ajout d'information sur la perturbation horaire de xosview</li>
<li>Ajout du message d'information "Erreur d'interruption APIC sur
le CPU#n"</li>
<li>Ajout d'information sur les blocages mat&eacute;riels</li>
<li>Suppression de la section "Comment obtenir un maximum de
performance" (obsol&egrave;te)</li>
<li>Ajout d'information sur les syst&egrave;mes double processeurs
avec diff&eacute;rents processeurs x86 (un Celeron et un PII)</li>
</ul>
</dd>
<dt><b>v1.5, 4 octobre 1999</b></dt>
<dd>
<ul>
<li>Plus de pr&eacute;cision dans la description de PSET</li>
</ul>
</dd>
<dt><b>v1.4, 30 septembre 1999</b></dt>
<dd>
<ul>
<li>Pr&eacute;cision sur l'activation du support MTRR pour les
noyaux SMP x86 (moi)</li>
</ul>
</dd>
<dt><b>v1.3, 29 septembre 1999</b></dt>
<dd>
<ul>
<li>Beaucoup beaucoup de corrections grammaticales et typographique
(<b>Wade Hampton</b> aka hww)</li>
<li>Ajout d'information dans la courte introduction &agrave; propos
des diff&eacute;rences entre 2.2/2.4/2.0 (hww)</li>
<li>Ajout des choses &agrave; faire pas &agrave; pas pour
recompiler le noyau (hww et moi)</li>
<li>Ajout d'information concernant les probl&egrave;mes li&eacute;s
aux modules SMP/UP (hww)</li>
<li>Ajout de pr&eacute;cision dans la section Threads Posix
concernant les threads utilisateurs vs. les threads du noyau
(hww)</li>
<li>Nouvel item &agrave; propos de NFS et des blocages du noyau
(hww)</li>
<li>Nouvel item &agrave; propos des blocage noyau sans message
d'alerte (hww)</li>
<li>Nouvel item &agrave; propos du d&eacute;bogage des
probl&egrave;mes de blocage (hww)</li>
<li>Ajout d'information &agrave; propos des probl&egrave;mes de
d&eacute;gagement de chaleur (hww)</li>
<li>Divers mise &agrave; jour que j'ai oubli&eacute; (hww)</li>
<li>Nouvel item &agrave; propos des acc&egrave;s disquette et du
son (hww)</li>
</ul>
</dd>
<dt><b>v1.2, 27 septembre 1999</b></dt>
<dd>
<ul>
<li>Changement de nom: ce document est maintenant un Howto. TWD, et
rapide! (<b>Guylhem Aznar</b>)</li>
</ul>
</dd>
<dt><b>v1.1, 26 septembre 1999</b></dt>
<dd>
<ul>
<li>Ajout d'un lien vers le premier brouillon de la FAQ de Chris
Pirish</li>
<li>Extension des probl&egrave;mes li&eacute;s aux IRQ</li>
</ul>
</dd>
<dt><b>v1.00, 25 septembre 1999</b></dt>
<dd>
<ul>
<li>Premi&egrave;re mise &agrave; jour depuis bien longtemps !</li>
<li>Retraitement de toute la FAQ: le 2.2 est l&agrave; et le 2.4
arrive</li>
<li>Ajout des informations sur le verrouillage noyau de Ingo
Molnar</li>
<li>Suppression de l'item "Quelle seront les performance de mes
applications sous SMP"&nbsp;: d&eacute;pass&eacute;</li>
<li>Suppression de l'item "Mon syst&egrave;me SMP se verrouille
tout le temps."&nbsp;: d&eacute;pass&eacute;</li>
<li>Suppression de l'item "Vous utilisez le 2.0.35, n'est-ce pas
?"&nbsp;: d&eacute;pass&eacute;</li>
<li>Suppression de l'item "Certains mat&eacute;riels sont aussi
connu pour poser des probl&egrave;mes."&nbsp;:
d&eacute;pass&eacute;</li>
<li>Effacement de la section "Cartes m&egrave;re avec des
probl&egrave;mes connus". Nous devrions recommencer du
d&eacute;but.</li>
<li>Suppression de la section "Carte m&egrave;re sans
probl&egrave;mes connus"&nbsp;: d&eacute;pass&eacute;e</li>
<li>Mise &agrave; jour de la section celeron (de nombreuses
personnes)</li>
<li>Ajout de "Les machines SPARC sun4m SMP" dans les machines Sparc
support&eacute;es (<b>Anton Blanchard</b>)</li>
<li>Ajout de l'item "Durant le d&eacute;marrage la machine se
bloque en signalant un probl&egrave;me IOAPIC" dans la section
"Pourquoi cela ne marche-t-il pas sur ma machine ?"</li>
<li>Ajout de l'item "A propos des performances SMP ?"</li>
<li>Mise &agrave; jour de l'item "Pourquoi mon vieux Compaq ne
marche-t-il pas ?"</li>
<li>R&eacute;paration d'un lien d&eacute;pass&eacute;</li>
<li>Ajout d'un pointeur vers les patches de test SMP d'Ingo</li>
</ul>
</dd>
<dt><b>v0.54, 13 mars 1999</b></dt>
<dd>
<ul>
<li>Ajout de la section &agrave; propos des syst&egrave;mes SMP
Alpha</li>
</ul>
</dd>
<dt><b>v0.53, 08 mars 1999</b></dt>
<dd>
<ul>
<li>Ajout de la section sur les syst&egrave;mes PowerPC SMP</li>
</ul>
</dd>
<dt><b>v0.52, 07 mars 1999</b></dt>
<dd>
<ul>
<li>Ajout de la section sur les syst&egrave;mes Sparc SMP</li>
</ul>
</dd>
<dt><b>v0.51, 06 mars 1999</b></dt>
<dd>
<ul>
<li>Ajout de la section dual-celeron</li>
<li>Suppression de la section Adaptec</li>
<li>Mise &agrave; jour du lien procps</li>
<li>Mise &agrave; jour du lien xosview</li>
<li>Ajout d'une r&eacute;ponse pour le plantage du quadri Xeon</li>
<li>Mise &agrave; jour de l'item &agrave; propos du patch de la
glibc pour gd&nbsp;: devrait &ecirc;tre inclus dans la RH 5.2</li>
</ul>
</dd>
<dt><b>v0.50, 03 f&eacute;vrier 1999</b></dt>
<dd>
<ul>
<li>Mise &agrave; jour du lien "Programmes Multithread sous
linux"</li>
</ul>
</dd>
<dt><b>v0.49, 13 janvier 1999</b></dt>
<dd>
<ul>
<li>Mise &agrave; jour &agrave; propos de CONFIG_SMP. Ajout du .txt
dans Documentation/smp. (<b>Michael Elizabeth Chastain</b>)</li>
</ul>
</dd>
<dt><b>v0.48, 10 d&eacute;cembre 1998</b></dt>
<dd>
<ul>
<li>Fautes d'orthographes corrig&eacute;e. Adresses email
corrig&eacute;e.</li>
</ul>
</dd>
<dt><b>v0.47, 20 novembre 1998</b></dt>
<dd>
<ul>
<li>Ajout de la mention du patch MTRR est inclus 2.0.36 (li&eacute;
&agrave; des probl&egrave;me de BogoMips)</li>
</ul>
</dd>
<dt><b>v0.46, 10 novembre 1998</b></dt>
<dd>
<ul>
<li>Mise &agrave; jour &agrave; propos des cartes m&egrave;re Epox
KP6-LS</li>
</ul>
</dd>
<dt><b>v0.45, 25 octobre 1998</b></dt>
<dd>
<ul>
<li>Correction d'une erreur concernant le fichier /proc/stat</li>
<li>Ajout d'un pointeur vers le site CESDIS Ethernet Linux
Drivers</li>
</ul>
</dd>
<dt><b>v0.44, 14 octobre 1998</b></dt>
<dd>
<ul>
<li>Mise &agrave; jour du lien vers la page web&nbsp;: <em>Cartes
m&egrave;re suppos&eacute;es fonctionner sous Linux SMP</em></li>
<li>Ajout de l'explication de Jakob&nbsp;: comment
chronom&eacute;trer un syst&egrave;me SMP avec les noyaux 2.0</li>
</ul>
</dd>
<dt><b>v0.43, 9 septembre 1998</b></dt>
<dd>
<ul>
<li>Mise &agrave; jour de la premi&egrave;re question dans la
section 3.1</li>
<li>Mise &agrave; jour du lien mt-Mesa&nbsp;: multithread est
maintenant inclus comme exp&eacute;rimental dans la distribution
Mesa</li>
</ul>
</dd>
<dt><b>v0.42, 2 septembre 1998</b></dt>
<dd>
<ul>
<li>Mise &agrave; jour cosm&eacute;tique dans la section 3.3</li>
<li>Deux liens sont marquer comme obsol&egrave;tes (Multithreaded
Mesa et performance SMP)</li>
<li>Mise &agrave; jour de l'item &agrave; propos des threads et des
exceptions en C++ (sect 3.3)</li>
</ul>
</dd>
<dt><b>v0.41, 1 septembre 1998</b></dt>
<dd>
<ul>
<li>Ajout d'une section majeur: "3.3 Programmation SMP"
&eacute;crite par Jakob &Oslash;stergaard</li>
<li>D&eacute;placement de la section "3.2 Cot&eacute; utilisateur"
vers la section 3.3</li>
</ul>
</dd>
<dt><b>v0.40, 27 ao&ucirc;t 1998</b></dt>
<dd>
<ul>
<li>Mise &agrave; jour: section 3.1, item 7: processor
affinity</li>
</ul>
</dd>
<dt><b>v0.39, 27 ao&ucirc;t 1998</b></dt>
<dd>
<ul>
<li>Mise &agrave; jour n&eacute;cessaire du BOIS Award pour les
cartes m&egrave;res Tyan (<b>hASCII</b>)</li>
<li>Ajout d'un item sur les IRQ dans la section plantage (moi et
<b>hASCII</b>)</li>
<li>Ajout du bon support de l'Asus P2B-DS (<b>Ulf Rompe</b>)</li>
<li>Ajout d'une autre archive smp-list dans la section pointeur
(<b>Hank Leininger</b>)</li>
</ul>
</dd>
<dt><b>v0.38, 8 ao&ucirc;t 1998</b></dt>
<dd>
<ul>
<li>Ajout d'un pointeur vers la FAQ Linux Threads</li>
</ul>
</dd>
<dt><b>v0.37, 30 Juillet 1998</b></dt>
<dd>
<ul>
<li><b>Emil Briggs</b> est en train de travailler sur des plugins
parall&egrave;les pour Gimp (voir "Existe-t-il des programmes ou
des library utilisant les threads ?", section "Cot&eacute;
utilisateur")</li>
</ul>
</dd>
<dt><b>v0.36, 26 Juillet 1998</b></dt>
<dd>
<ul>
<li>Merci &agrave; <b>Jakob &Oslash;stergaard</b>, deux changement
dans "Possible causes of Crash"
<ul>
<li>Chang&eacute; le 2.0.33 pour le 2.0.35 (dernier noyau
stable)</li>
<li>Ajout de la section "Les plantages li&eacute;s au BIOS"</li>
</ul>
</li>
</ul>
</dd>
<dt><b>v0.35, 14 Juillet 1998</b></dt>
<dd>
<ul>
<li>Ajout des N440BX Server Board dans
carte-m&egrave;re-sans-aucun-probl&egrave;me</li>
<li>Ajout d'une success story pour la carte m&egrave;re GigaByte
avec une mise &agrave; jour du BIOS</li>
<li>Ajout de la section "Comment obtenir les performances maximum
?" (attend vos suggestions ;)</li>
</ul>
</dd>
<dt><b>v0.34, 10 juin 1998</b></dt>
<dd>
<ul>
<li>Ajout de la section "Parallelizing/Optimizing Compilers for
586/686 i machines" dans la section "Useful Pointers", merci
&agrave; <b>Sumit Roy</b></li>
<li>Correction, "Asus P/I-UP5" est en fait "Asus P/I-P65UP5"</li>
</ul>
</dd>
<dt><b>v0.33, 3 juin 1998</b></dt>
<dd>
<ul>
<li>Encore une success story avec une carte m&egrave;re GigaByte
DLX.</li>
<li>Une astuce pour les cartes m&egrave;re Tyan, d&eacute;sactiver
l'option "DRAM Fast Leadoff" du BIOS</li>
</ul>
</dd>
<dt><b>v0.32, 27 mai 1998</b></dt>
<dd>
<ul>
<li>Asus P/I-UP5 ajouter &agrave; la section
carte-m&egrave;re-sans-aucun-probl&egrave;me</li>
</ul>
</dd>
<dt><b>v0.31, 18 mai 1998</b></dt>
<dd>
<ul>
<li>Elitegroup P6LX2-A marche avec le 2.1.100 et le 101</li>
<li>Les bugs doivent &ecirc;tre rapport&eacute;s
&agrave;<code>linux-smp@vger.rutgers.edu</code></li>
</ul>
</dd>
<dt><b>v0.30, 12 mai 1998</b></dt>
<dd>
<ul>
<li>SuperMicro est maintenant une carte m&egrave;re dans la section
carte-m&egrave;re-sans-aucun-probl&egrave;me</li>
</ul>
</dd>
<dt><b>v0.29, 11 mai 1998</b></dt>
<dd>
<ul>
<li>La success story d'une carte m&egrave;re GigaByte 686 avec le
2.1.101</li>
<li>Ajout d'un nouvel item dans la section "Cot&eacute;
utilisateur"&nbsp;: "Existe-t-il des programmes ou des library
utilisant les threads ?"</li>
<li>La library OpenGL Mesa library est en train de passer au
multithread. Cool! Voir la nouvelle section pour plus de
d&eacute;tails.</li>
</ul>
</dd>
<dt><b>v0.28, 09 mai 1998</b></dt>
<dd>
<ul>
<li>Un miroir US de cette FAQ est maintenant disponible (voir
Introduction)</li>
<li>Fusion de deux entr&eacute;es confuses, Gigabyte 686</li>
</ul>
</dd>
<dt><b>v0.27, 05 mai 1998</b></dt>
<dd>
<ul>
<li>Nouvelles informations pour les pilotes Adaptec et TekRam</li>
<li>Les cartes m&egrave;res Micronics W6-LI marche avec SMP</li>
</ul>
</dd>
</dl>
<h2><a name="s10">10. Liste des contributeurs</a></h2>
<p>Un grand merci &agrave; ceux qui m'ont aid&eacute; &agrave;
maintenir ce HOWTO:</p>
<ol>
<li>Tigran A. Aivazian</li>
<li>John Aldrich</li>
<li>Niels Ammerlaan</li>
<li>H. Peter Anvin</li>
<li>Osamu Aoki</li>
<li>Guylhem Aznar</li>
<li>Ralf B&auml;chle</li>
<li>James Beard</li>
<li>Troy Benjegerdes</li>
<li>Anton Blanchard</li>
<li>Emil Briggs</li>
<li>Robert G. Brown</li>
<li>Alexandre Charbey</li>
<li>Michael Elizabeth Chastain</li>
<li>Samuel S. Chessman</li>
<li>Alan Cox</li>
<li>Andrew Crane</li>
<li>Cort Dougan</li>
<li>Mark Duguid</li>
<li>St&eacute;phane &Eacute;colivet</li>
<li>Jocelyne Erhel</li>
<li>Jay A Estabrook</li>
<li>Byron Faber</li>
<li>Mark Garlanger</li>
<li>hASCII</li>
<li>Wade Hampton</li>
<li>Andre Hedrick</li>
<li>Claus-Justus Heine</li>
<li>Benedikt Heinen</li>
<li>Florian Hinzmann</li>
<li>Moni Hollmann</li>
<li>Robert M. Hyatt</li>
<li>Jeffrey H. Ingber</li>
<li>Richard Jelinek</li>
<li>Tony Kocurko</li>
<li>Geerten Kuiper</li>
<li>Martijn Kruithof</li>
<li>Doug Ledford</li>
<li>Kumsup Lee</li>
<li>Hank Leininger</li>
<li>Ryan McCue</li>
<li>Paul Mackerras</li>
<li>Cameron MacKinnon</li>
<li>Joel Marchand</li>
<li>David Maslen</li>
<li>Chris Mauritz</li>
<li>Jean-Francois Micouleau</li>
<li>David Miller</li>
<li>Ingo Molnar</li>
<li>Ulf Nielsen</li>
<li>Jakob Oestergaard</li>
<li>C Polisher</li>
<li>Adrian Portelli</li>
<li>Matt Ranney</li>
<li>Daniel Roesen</li>
<li>Ulf Rompe</li>
<li>Jean-Michel Rouet</li>
<li>Volker Reichelt</li>
<li>Sean Reifschneider</li>
<li>Sumit Roy</li>
<li>Thomas Schenk</li>
<li>Terry Shull</li>
<li>Chris K. Skinner</li>
<li>Hans - Erik Skyttberg</li>
<li>Szakacsits Szabolcs</li>
<li>Jukka Tainio</li>
<li>Simen Timian Thoresen</li>
<li>El Warren</li>
<li>Gregory R. Warnes</li>
<li>Gero Wedemann</li>
<li>Christopher Allen Wing</li>
<li>Leonard N. Zubkoff</li>
</ol>
</body>
</html>