File: defurne.html

package info (click to toggle)
lg-issue33 3-4
  • links: PTS
  • area: main
  • in suites: woody
  • size: 2,284 kB
  • ctags: 137
  • sloc: makefile: 36; sh: 4
file content (913 lines) | stat: -rw-r--r-- 53,307 bytes parent folder | download | duplicates (3)
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
<!--startcut ==========================================================-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<title>Thoughts about Linux LG #33</title>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#A000A0"
ALINK="#FF0000">
<!--endcut ============================================================-->

<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>

<P> <HR> <P> 
<!--===================================================================-->

<center>
<H1><font color="maroon">Thoughts about Linux</font></H1>
<H4>By <a href="mailto:jurgen.defurne@scc.be">Jurgen Defurne</a></H4>
</center>
<P> <HR> <P>  

<H1>Introduction</H1>
<P>First, I want to give a small explanation on the backgrounds of this
document. There are several parts which lead to my advocating of Linux
in the corporate environment.
<P>First of all, it is already four years since I discovered Linux. It is only
recently however that I really started using Linux itself. I used some
GNU tools on the DOS and OS/2 platform, but only through recently
expanding my storage could I install Linux. I printed some manuals,
subscribed myself to the Linux Journal, I try to read the Linux Gazette
frequently. Well, I consider myself almost a fan of the first hour of
Linux.
<P>Secondly, since the beginning of 1997 I have worked in a traditional
mini/COBOL/database environment and I have noticed that the people
who use these systems, find a lot in such an environment : easy to
control and operate, you need only one person to program, background
operation etc. The other side of the coin is that these proprietary
systems are expensive. You pay every year an expensive maintenance
contract or you pay an expensive price for reparation and upgrading.
<P>My third reason, last but not least, is that I have never liked
Windows in any of its incarnations since 1990. It generated GPF's for
unknown reasons in 1990 and eight years later, it still does. It forces
people in buying expensive hardware, which then cannot be utilised
efficiently (if you don't want to crash).
<P>These three reasons have lead me to the writing of three document,
which I want to be published via the Linux Gazette. The reasons for
this is that I found that the Linux Gazette is also read by people who
have other system backgrounds than only DOS or Linux, and this is
crucial for the objective that I want to reach.
<P>This objective is in its essence the same as Linus Torvalds says,
and it is :<CITE>World domination</CITE>. However, I have my own
reasons to believe that world domination will not be attained only
through the PC, workstation and Internet applications market. <EM>I
believe that Linux has the potential to compete in the corporate
marketplace.</EM> Alas, there are still a lot of holes to be filled in
before this will come true. However, I also think there is enough
potential among the Linux enthusiasts to make this dream come true.
<P>The following text consists of three parts in which I was trying to
order my ideas about what Linux further needs to attain the stated
goal.
<P>In the first part that I wrote, I am trying to compare Linux systems with mini- 
and mainframe-computers that I know and their architectures and I want to make 
an appeal to people who might be interested in developing Linux for large 
systems. I posted it on several c.o.l.* newsgroups, but I did not
receive much response (only 1 person seemed interested).

<H2>Mainframe Linux/Linux Mainframes</H2>
<H3>0. To do</H3>
<P>This document should be thoroughly cleaned up and restructured. The main
reason that I send over the Internet as is, is that I want to know the amount
of response it generates. If there is no interest whatsoever, then the
project will be cancelled. If you made it through here, please read on.
Any ideas to have a good working title or something like that, are always
welcome.
<P>This document doesn't have the status of HOWTO. If I would assign it a status,
then it would be something like an RFC, although not that official.
<P>I apologise if things are not always clear. I need to document some parts
with graphics to provide a clearer understanding. It should probably
also be created as an sgml-file, to have more processing power.
<P>Although this paper is sent to different linux newsgroups, it should be best
to try to pick just one newsgroup to communicate about this document.
<H3>1.</H3>
<P>This document is by no means complete. It attempts to define a framework to
develop and deploy Linux as a mainframe operating system. If any idea's in
this document have duplicates somewhere else in the Linux development community,
I would be glad to know of them, so that
<OL>
<LI>They can be used with much less development effort
<LI>They can be referenced to in (hopefully) further editions of this
      document
</OL>
<H3>2. Terms and conditions</H3>
<P>This document is for the moment completely my own responsibility and my own
copyright. It may be distributed everywhere, but I am the only one who may 
change it. Please, send questions and suggested changes to my email-address
jurgen.defurne at scc.be.
All trademarks acknowledged.
<P>I intend to put much time into this project. I have a fine, regular job working
daytime as a COBOL programmer, so time should be not really a concern.
<H3>3. Rationale</H3>
<P>The ideas in this document are a reflection of my own experiences in working
with computers and things that I have read about in a whole bestiary of
publications (magazines, books, RFC's, HOWTO's, The Web, Symposium records,
etc...). The basis is this : Linux is highly scalable. For me, it has proven
to be far more scalable than any MS product. I run Linux on the following
systems :
<UL>
<LI>Toshiba portable computer 386sx/16MHz/3Mb/200 Mb
<LI>386sx/16MHz/16Mb/Diskless
<LI>386/33MHz/4Mb/200Mb
<LI>486/50MHz/32Mb/100Mb
<LI>6x86/P150+/16Mb/500Mb
</UL>
<P>Some of these systems are interconnected, others not (yet). With the use of
telnet, X and TCP/IP it is possible to use these systems together, to run
tasks on different systems etc. But I want more. What I would really like is
that these interconnected systems can be viewed as one single system, with a
common address space, and where their individual resources are added together
to form a more powerful computer. The main target would be to make it possible
to introduce Linux in environments where traditional minicomputers are used
for data-entry and data-processing. This may sound like pretty ambitious goal.
I don't know if it is. What I do know is that these are environments where
high availability is a top priority (<A HREF="#note_1">Note 1</A>).
<P>Another reason to do this project is the fact that in the beginning of the year
Tandem has built a mainframe computer using 64 4-way SMP systems, NT,   
their own interconnection software and Oracle Parallel Server. Why shouldn't we
be able to do something alike ?
<H3>5. Goals</H3>
<P>This document must describe not only software, but also hardware and system
procedures. I hope to revise it very regularly. I would like it to contain
links to used source code, schematics, construction plans, all used sources
and a history and possible planning of the project. It should also give people
who want to make money from Linux the possibility to do this on a professional
level. That is, they should be able to help companies with processing
requirements to assess their needs, give advice on required hardware, install
and implement the system and provide service, maintenance and education.
<H3>6. What makes a good mini/mainframe environment ?</H3>
<P>I haven't had a regular programming education. I am an electronics engineer.
After school I got into microcomputers and programming and I broadened my
education with courses on business organisation and industrial informatics. My
experiences in the mini/mainframe world date back from as recently as januari
1997. At first I got to work in WANG VS (<A HREF="#note_2">Note 2</A>)
environment, now I am still working as WANG programmer, but the WANG's
have a duty as front-end input processors to the mainframe (Bull
DPS8000/DPS9000) and as legal document processing systems. In my first
job, the WANG VS minicomputer was used more as production mainframe system.
<P>Now, what do these systems have in common ?
<UL>
<LI>a fault-tolerant, high performance file system
<LI>database products with transactional capabilities
<LI>a single compiler for development, which supports the file system and
the database management system
<LI>a versatile scripting or job control language
<LI>an interactive development system
<LI>easy access to operating system functions
<LI>easy, but powerful access to operate the system
<LI>optional : powerful tools for non-programmers to access, extract and
process data from the database (Reports, Queries, ...)
</UL>
<P>The main difference between the mini and the mainframe is in the operation of
the system. The four main tasks that have to be done on a computer system are
administration, exploitation, production maintenance and development. On a
mainframe these tasks are done by different people, on a mini these tasks can
be done by one person, or shared, but you don't need full time personnel for
the different tasks (except for programming, that is). The system running on a
mainframe can be sufficiently complicated that some tasks or operations may only
be done by some trusted personnel.
<P>Operating the system comprises the following tasks :
<UL>
<LI>Managing printers and print-queues
<LI>Managing jobs and job-queues
<LI>Managing communications and communications devices
<LI>Managing disks, tapes, workstations and system options
</UL>
<H3>7. What makes a good mini/mainframe computer ?</H3>
<P>Basically, the ability to handle tasks efficient and fast. If you want to know
more about the chores of operating systems, there is enough literature available
(see literature list). The basic problem in running a large computer system is
the difference between batch-operations and interactive or real-time operations.
You want batch programs as fast possible to be executed and you want for the
other kind a fast response time. The basic problem with PC's versus
mini/mainframe computers is that the IO structure of the PC is very primitive.
This is starting to change, first with VESA, now with PCI, but it still comes
nowhere in the neighbourhood of a minicomputer. Basically, these systems always
have a separate internal processor (or more than one) on the IO bus to handle
data transport between devices and the memory. With I2O, this should become
available to the PC world, but it is still proprietary and not available to
Linux and/or Open Source developers.
<P>Tasks compiled for x86-architectures tend also to use more memory. Let's take
some examples from minicomputers and mainframes I know about and have access
to documentation.
<TABLE>
	<CAPTION>Overview of some corporate systems</CAPTION>
		<TR><TH>System		<TH>Main memory	<TH>Clock	<TH>Bus size	<TH>Users supported
		<TR><TD>WANG VS 6	<TD>4 Mb		<TD>16 MHz	<TD>16 bit		<TD>32
		<TR><TD>WANG VS 6120<TD>16 Mb		<TD>20 MHz	<TD>32 bit		<TD>253
		<TR><TD>WANG VS 6250<TD>64 Mb		<TD>50 MHz	<TD>32/64 bit	<TD>253
		<TR><TD>WANG VS 8000<TD>32 Mb		<TD>N.A.   	<TD>32/64 bit	<TD>253
		<TR><TD>BULL DPS9000<TD>2 x 64 Mb	<TD>N.A.   	<TD>N.A.   		<TD>N.A.
		<TR><TD>BULL DPS8000<TD>2 x 32 Mb	<TD>N.A.   	<TD>N.A.   		<TD>N.A.
</TABLE>
<P>These systems are smaller than PC's in terms of memory, yet they support more
users and tasks than a PC would do. I wouldn't use my Toshiba portable to
support ten users on a database. Yet, that is what the WANG VS 6 is (was)
capable of, with the same characteristics.
<P>This is for the moment my main criticism of standard PC's and their software :
they are extremely inefficient. The first inefficiency comes from the methods
used to lower the price of a PC : the CPU is responsible for data transport
between devices and memory. You have DMA available, but it isn't very efficient.
The second inefficiency comes from the software mostly used on PC's : it takes
up much space on disk and in memory.
<P>A third inefficiency is in the software itself : it has so many features, but
these aren't used much. The more features in the software, the less efficient
it becomes (<A HREF="#note_3">Note 3</A>).
<P>There is another thing to be learned from mini/mainframe environments : keep
things simple. I don't think the current desktop/GUI environment is simple. It
doesn't have a steep learning curve, but basically what you have are super
souped up versions of what are basically simple programs. When writing
programs or designing systems, one should always keep in that after a certain
point it costs more effort to add more functionality to a program, while this
functionality decreases efficiency.
<H3>8. Existing functionality</H3>
<P>In the area of parallel computers there is the Beowulf system and associated
libraries. Their basic target is parallel processing for scientific purposes,
while my purpose is business data processing. As I see it, some of their goals
walk parallel with mine, especially in the areas of existing bottlenecks : the
network, distributed file access, load balancing etc. However, the way business
programs are run differs from scientific computing. MPP is also more in the way
of creating a computer to run really big tasks, while on a business machine
you have logins from users for data querying, transactional processing, batch
processing of incoming data, preparing outgoing data, establishing communication
with other systems. In this sense, what we are looking for is not to distribute
one task over several computers to speedup processing, but to serve up adequate
processing power, data manipulation facilities and information bandwidth for a
large number of users. These goals need different OS support than MPP.
<P>I have studied the Beowulf structure (a Beowulf HOWTO is available
on the Internet). The Beowulf structure works is a MPP system in which
only one computer effectively runs the application. All other nodes in
the system are slaves to this one CPU. This is why the Beowulf system
is only partially suited to attain my goal.
<H3>9. Where do we start ?</H3>
<P>We need to start with a set of completely defined Linux operated computers,
from now on called CPU's, which are somehow connected to each other by means
of an abstract communications layer or CL. This CL can be implemented using 
serial connections, Ethernet, SCSI or anything else that we can devise to
make CPU's talk to each other. A CPU may be a single-way computer or a
multi-way SMP computer. 
<H3>10. Where do we want to end ?</H3>
<P>I think the end point should be to view the system as one single entity. To
do this, the following requirements should be met :
<UL>
<LI>Every process should see the same file system
<LI>Resources (via /dev files) should be shareable accross CPU's
<LI>Every CPU should have the same view of OS and memory
<LI>Process information should be shared accross CPU's
</UL>
<P>One of the fundamental changes in the OS should be the way exec() operates.
When exec() starts a new process, this could be on any CPU. The original
links need to be preserved and processes should end in the same way as 
always.
<P>Interprocess communication is straightforward I think. What I would like to
know is if it is worthwile to strive for a system view in which all memory
is mapped into one address space ? (Idea behind it : provide every CPU with
the same view of the system : it's OS, followed by the memory pools of all
other CPU's mapped into the same address space). This is what NUMA
(non-uniform memory access) is about. Can the Linux community attain
this subgoal, or does it need to much specialised resources ?
<H3>11. High Availability</H3>
<P>Some key parts of Linux should be redesigned or replaced by fault-tolerant
parts. The largest part which comes to mind is the file-system. A few months
ago I had a nasty experience. A connector on the cable of my SCSI subsystem
had a defect, with the consequence that the system of a sudden completely froze
while I was busy using X-Windows. The trouble with e2fs is that on these
occassions the whole filesystem gets corrupted. This should be made more sturdy.
<P>The other part is that the system may not freeze on these occasions. It should
be possible to provide a bare minimum of functionality, eg. that the kernel
takes completely over and switches to text mode to provide diagnostic
information or tries to create a core dump.
<P>Another problem that I have encountered is the lack of reliability when a
harddisk drive gives trouble. What happened to me whas that on using an old
SCSI drive the kernel and/or e2fs started to write strange messages when I
tried to use the disk. When the system encounters problems with devices, the
problems should be logged, the operation should be stopped and informative
messages should be displayed.
<P>Other key features in the area of HA should be the tolerance of the complete
system when a CPU is missing. A CPU may only be added when it passes the self
test completely and finds out that everything is working fine. When a CPU
quits while being in the system, there should be possibilities to restart
processes which have been interrupted. For this one should provide the 
programmer with features to help with this problems : a transactional file
system, checkpoint functions (other ?).
<P>The last idea I think of is maybe the possibility of swapping a complete task
between two CPU's. A task consists of CODE and DATA. You don't need to save 
CODE. DATA can be completely swapped to harddisk. If you have a way to transfer
the process information from one CPU to another, then it should be possible to
reload CODE and DATA and restart the process on another system.
<H3>12. Summary</H3>
<P>There are two targets. The first is the creation of an extension which combines
several Linux PC into one system. Users and processes should get a same view of
of the complete system as one system. This should also mean that certain
administrative chores should depend only on centrally stored and shared 
information.
<P>The second one is to add more and better managed fault tolerance, preferably
more interactively managed.
<P>Well, this is it. I hope that people ask sane questions, that I don't get
flamed and that it raises enough interest to advance Linux to a higher level.
<H3>References.</H3>
<P><STRONG>Ths reference list is clearly not finished. I need to obtain
more details about some works.</STRONG><BR>
The Linux High Availability White Paper.<BR>
The Beowulf HOWTO<BR>
The Parallel Processing HOWTO.<BR>
Andrew S. Tanenbaum, Design and Implementation of Operating Systems<BR>
<H3>Notes.</H3>
<P><A NAME="note_1">Note 1.</A><NOTE>I worked for 16 months in a small
transport company. The core of the business was contained in a WANG VS
minicomputer. If the system was offline, then nobody could do his work
properly. The system was basically a database to store dispatching
operations, the revenues of all operations, the cost control and the
accountancy. I think there are many small firms, who can't afford
mainframes, but who need more processing power than the average PC can
handle, and where many people need different views of the same data.</NOTE>
<P><A NAME="note_2">Note 2.</A><NOTE>The WANG VS is a particular good
example of proprietary solution which does an excellent job, but with a
very steep price. They are very expensive for the initial buy, the
expansion of the system and the maintenance. I think this is one of the
main reason's why people want to get rid of their WANG systems. You can
buy, expand and maintain an HP system for one tenth of the price the
WANG VS costs.</NOTE>
<P><A NAME="note_3">Note 3.</A><NOTE>If you wonder why I emphasize
efficiency : I became interested in microprocessors in 1980 when you
hadn't much microprocessor and memory. My first computer was a Sinclair
ZX Spectrum with a> whopping 48 kB RAM. I am still astonished what some
programmers could do with that tiny amount of memory. There are other
points besides this : what processing power could be freed up if you
were able to use all those wasted processor cycles in the common
desktop PC's ? For small companies, a PC is still rather expensive.
Combining the power of their PC's could maybe give them an extra edge
in their operations.</NOTE>
<HR>
<P>In the second part I am trying to develop an architecture to extend Linux into a 
parallel processing system, not for numerical processing like Beowulf, but for 
administrative dataprocessing.
<H2>Description of the booting sequence of the multi-processing
architecture</H2>
<P>The goal of this document is to establish the components which should
comprise the project which was mentioned in the previous document (Linux
mainframes). To do this, a description of the boot sequence will be 
given, together with the possible failures and the solutions.
<P>Before attempting this, however, I want to give a short summary of the 
guidelines which should lead us toward the goal of Linux systems which 
can be deployed in corporate environments.
<P>Minicomputers and mainframes provide reliability and high processing 
power. The reliability is largely obtained in two ways. The first one is
in the design of the system, the second one is the existence of a 
thorough support department with online help and specialised 
technicians. The emphasize in this document is on the hardware side of 
the system.
<P>High processing power is obtained in several ways. They involve the use 
of cache-memory, wider data-paths, increasing clock frequency, 
pipelining processing and efficient data-transfer between memory and IO.

<H3>What can we do about reliability ?</H3>

<P>On the reliability side the system is dependent on hard- and software. 
If we are to use currently available parts (motherboards and cards) then
the only thing we can influence is the way systems are assembled. Care 
should be taken to avoid static discharges, by using anti-static mats 
and bracelets.
<P>On the software side we have the Linux operating system which is very 
reliable, with reports of systems running for months without erroneous 
reboots.
<P>However, hardware can fail and in this respect I think that there still 
needs work done on Linux. If the error is not in the processor or
the system memory, then a running system should be able to intercept 
hardware errors and handle them gracefully. If at all possible, system 
utilities should be available to test the CPU, the system memory, the 
cache and the address translation system.
<P>The Linux High Availability White Paper documents clustering of small
systems. Later on in this document, some other techniques will be 
proposed.

<H3>What can we do about the processing power ?</H3>

<P>Processing power comes on several levels. On the first level, that of 
the CPU and the main memory we can't do much. With current motherboards 
with bus speeds of 66, 75 and 100 Mhz, we get data transfer speeds 
between memory and CPU of 264 MB/s, 300 MB/s and 400 MB/s. These should 
be sufficient for most applications. Memory is cheap, sizes of 64 to 128
MB should also give headroom for large applications.
<P>The largest problem with standard motherboards is that all IO needs to 
be handled by the CPU or else by a slow DMA system. This means that a 
large part of the operating system is being used by device driver code. 
In mini/mainframe systems this is not the case. All IO is handled by 
separate IO-processors. These IO-processors implement the device drivers
and as such free a large part of the central processor.
<P>To relieve the central processor of this burden, there are three 
solutions. The first one is being implemented by the I2O consortium. It 
defines standards for intelligent IO-boards on the PCI bus. These boards
can transfer the requested data themselves to the main memory of the 
CPU. The only problem is that as far as Linux is concerned, I2O is 
proprietary.
<P>I think that two other solutions should be possible. The first, and 
probably easiest, is to use an SMP motherboard and program the operating
system so that one processor is completely responsible for all IO, and 
the rest of the CPU's do the real work. Another idea is in the absence 
of SMP use two motherboards, run one with an adapted version of Linux to
handle all IO and use the other one to run only applications. The only 
trouble here is which system will be used to interconnect the 
motherboards. Especially in the case of mass storage devices, you want 
to stream the data from the device as fast as possible into the memory 
of the application. Currently, this means using the PCI bus in one way 
or another.

<H3>Summary</H3>

<P>Since we, as Linux users, have no sight on the design process of 
motherboards, reliability should be obtained through good standards of
assembly and by implementing redundancy.
<P>To obtain more processing power, the main CPU should be relieved as much
as possible from IO. This could be implemented by using SMP or by 
interconnecting motherboards.

<H3>A proposal for an architecture for Linux mini/mainframes</H3>

<P>Based on the previous ideas, using several motherboards interconnected 
by a high-speed network could give us the following benefits :
<UL>
<LI>Redundancy to increase reliability
<LI>Offloading IO tasks to one or more specially appointed nodes
<LI>Increased processing power
</UL>
<P>To obtain these benefits when the system is assembled, some operating 
system changes need to be provided. It is possible to interconnect 
computers and make these work in parallel, but all administration must 
be manually accounted for. So, what we need when the system is booted, 
is not a vision of several separate systems, but only one system.

<H3>Description of the boot sequence</H3>

<P>When booting the system, all nodes start in the usual way : installed 
hardware is identified, necessary drivers are run, a connection to the 
network should be made, NFS drives should be mounted, local file systems
should be checked and mounted.
<P>In the case of a normal system, all background processes would be 
started and users should be able to log in on the system.
<P>When the system should be seen as one complete system, the boot sequence
should be modified at this point. Resources which are normally only 
accessible on one node, should be shareable throughout the system. To 
build a common view, every node should have access to a common file 
system. In this file system the directories /dev, /etc and /proc should 
be accessible by every node.
<P>The directory /dev contains all shared devices. The directory /proc 
provides access to system structures which should be shared by every
node. The directory /etc contains the necessary files to control the 
system :
<UL>
<LI>users
<LI>groups
<LI>fstab
<LI>inittab
<LI>...
</UL>
<P>Every operating system on every node must be adapted to work via these shared 
directories.
<P>To control the creation of this shared system, one node will have to be 
designated 'master'. After the initial boot sequence, every node will 
have to wait for the master to initialize the network. This 
initialization can proceed in the following way :
<UL>
<LI>create /proc
<LI>create a system process table (accessible via proc)
<LI>create /dev
<LI>gather all shared devices on the network
<LI>execute fstab, inittab and other scripts to initialize the 
complete system
</UL>
<P>Started processes fall apart in two categories. Local processes run on 
the nodes which contain the resources that the process needs access to 
eg. getty, fax drivers, etc. Global process are independent of hardware 
and should be able to run on any node in the system.
<P>Any node should also be able to start a new process on the system. By 
using a load balancing system, all started processes must be evenly 
divided over all nodes.

<H3>Providing reliability in the system</H3>

The system as proposed above could present some problems. The first one 
is its dependency on a single master computer. If this master fails, 
then the whole system fails. To alleviate this, it should be possible to
define several masters. If the power is applied and the master nodes 
boot, then the first one to get hold of the interconnection network will
act as coordinator. If one master then fails, the only implication would
be that his shared resources are not available in the system.
<P>If a master fails while the system is up and running, then the basic
coordination of the system is gone. To overcome this problem, a backup 
master must be defined. This backup master needs to keep an updated copy
of all master system information. If the real master should fail then 
all nodes in the network should block themselves until the backup master
has come up.
The system should provide dynamic management of nodes. This means that 
nodes must be attachable by using system calls. This goes via the 
master, which then adds the system on the network. If a node must be 
detached, then none of its resources should be in use, otherwise the 
call fails.
<P>If a node fails when in use then this surely will pose problems. A 
failure can show itself on the network (network interface problem, 
processor error) or local. If a process uses a remote device, it will do
this by means of messages which are sent over the interconnection 
network. In the case of malfunction, the addressed node won't (can't)
answer anymore. The OS must block the process until the malfunction is 
removed.
<P>If there are problems in critical parts of the system, device drivers or
system processes should not blow-up the system or interfere with user 
processes, but they should have the means to correctly report the 
problem and block the processes which are using the particular resource.
If the malfunction is on a local level (device) then the device driver 
can return a message stating the error.
<P>The most critical part in the system is the interconnection network. 
This should be tested and tuned according to system demands. If 
possible, a fast protocol should be used instead of TCP/IP.

<H3>Summary</H3>

<P>The view every node has of the system should be the same.
Devices must be shareable accross the interconnection network.
The OS should be extended so that the exec() function, which is basic 
for starting processes, executes on a global level.
<P>Reliability should be built-in and configurable on several levels.
A message-based protocol is needed to share devices across the 
interconnection network.

<H3>Proposals for interconnection</H3>

<P>Basically, there are for the moment two interconnection systems which 
can be used of the shelf.
<P>The first is Ethernet. Based on the money to spend, you can assemble
systems with 10 Mbit, 100 Mbit or 1 Gbit networks. Increasing bandwith
means increasing processing power. To obtain the maximum of your
bandwidth, the ideal is using an SMP motherboard in which one CPU takes
care of all network-to-memory data transport.
<P>The second one which attracts interest in the Linux community, is the 
SCSI interface. Using modern SCSI cards, up to 16 motherboards could be 
connected together to provide for parallel processing.
<HR>
<P>This is the third part. I have compiled some cases where I have
participated to highlight some points that need more support in Linux.
<H2>Cases where Linux might be employed, but where it isn't</H2>
<P>Through several enhancements (Beowulf, Coda FS, Andrew FS) Linux gets more and 
more powerful. But how powerful is powerful really ? Linux is announced and used 
in more and more places, but there is a serious lack of numbers on the capacity 
of Linux in different environments and configurations.
<P>This is however a crucial point. In many environments, Linux gets introduced 
through the reuse of PC's (which is in itself a good point). There are however 
other environments where the introduction of new hard-  and software depends on 
the provision of hard numbers for acquisition, deployment, education, 
maintenance, infrastructure and depreciation of systems. This can range from a 
small office which only needs to cough up the required cash up to a financial 
institute which has large dataprocessing and communication needs.
<P>In some of these areas Linux hasn't probably even touched anything because those 
people use computers as a means to an end. The computer itself does not stir 
their imagination. They have tasks to be done and the computer is their 
instrument to complete those tasks faster and more precise. These are the 
environments which are lured into buying MS products. I know however several 
people which work in various different Wintel environments and none of them are 
satisfied.

Some complaints :

<P>Lock up of course : power users lock up more easily their PC, 	because they use 
a lot of applications next to each other.

<P>Unexplainable configuration changes : you enter your office and your application 
does not start. Reason : some ASCII text file has reverted to a
previous state (I had this one several times with the TCP/.IP
'services' file).

<P>MS Office for Windows 95 : You can not seem to use Word for large
documents (this is a complaint from a user in a large company).

<P>Windows NT : can not be deployed in situations where older applications need 
access to older and/or proprietary hardware.

<P>I am sure anyone who has ever used the system, knows other bugs.

<P>I think that one of the reasons why Linux isn't more employed in these 
environments is that it is mostly deployed using a single type of configuration 
existing of an IA32 CPU, a PC AT architecture, IDE/SCSI disk subsystem, an 
Ethernet NIC and standard serial devices. This makes it very easy to use Linux 
in the following places :
<UL>
<LI>e-mail
<LI>nntp
<LI>http
<LI>file systems	
<LI>printing
<LI>MPP (Beowulf)
<LI>embedded systems
<LI>workstations
<LI>telecommunications
<LI>networked, distributed systems
</UL>
<P>These are technical solutions for technical problems, implemented by technical 
people. However, for some places, some pieces are still missing and there are 
places where Linux could be used, but where it is not. The usability of Linux 
still depends too much on the technical skill level of the user. This should not 
be necessary. Companies should be able to deploy Linux quick, efficient and 
flawless. Introductory courses should be provided. This will mostly mean 
migrating from Windows knowledge to Linux knowledge. People should be made to 
understand that there are three pillars in the usage of a computer system and/or 
program :
<UL>
<LI>operations
<LI>administration
<LI>maintenance
</UL>
<P>On the system level these should be integrated transparently and tightly. A user 
shouldn't need to go through heaps of paper and manuals to find something quick, 
so menu driven is probably the best answer for this, with good context sensitive 
help. I even think that from the point of view of the user, things should be 
accessible under a heading 'Applications' where all his production programs 
should reside, and a heading 'Maintenance' where operational, administrative, 
system maintenance and diagnostic programs are located.
<P>If we want Linux systems to be used more in environments where people are not 
concerned with their computer per se, but as a means to do their job, then 
support will have to grow on several levels. To project these levels, I will 
present some cases more or less detailed. These cases present environments where 
I have worked, customers which needed support, people I know.

<H3>Case 1 : The SOHO environment</H3>

<P>With this I mean the family sized company which provides some basic services 
(grocer, plummer, carpenter, etc...). At most two persons are responsible for 
handling all administration. This consists mostly of two parts : accounting and 
handling of incoming/outgoing messages. The first part of the problem is 
providing this environment with a suitable accounting package which is 
applicable for the country where the company resides.
<P>The second part of the problem is handling all incoming and outgoing messages. 
This requires access to three channels : phone, fax and e-mail (if there are any 
other options then these are probably too expensive for this environment). 
Depending on the situation, there could be constraints on the usage of the 
channels (eg. no channel should block another channel, when answering the phone, 
the fax and e-mail should not be prohibited and/or prohibit each other). The 
configuration could probably be extended using a PABX card in the system, to 
provide extended telephony services via Linux.
<P>Like it or not, but these people have become accustomed to using WYSIWYG word 
processors and spread sheets, so the least that must be done is provide them 
with this functionality. There are at least two good packages available for 
Linux in this respect. Another thing that should be provided is a customer 
database which is closely linked to the former package. Creating new documents 
and using fill in documents from a user entry should be a must. Creation and 
insertion of simple graphics should be an available option too.
<P>If we consider at most two people then the system could be configured using two 
workstations of the same capacity, where some tasks are shared between each 
other, or it could be done using one more powerful system, which provides all 
services, and one cheap PC workstation, configured as an X-server.

<H3>Case 2 : A medium sized company I (10 users)</H3>
<P><B>File- and print-services, bookkeeping, inventory control</B>
<P>The company where I first worked from 1990 to 1991 had a Novell Netware system 
installed. We used the system to provide printservices for Mac- and PC-systems, 
as a repository for all kinds of drivers and diagnostic software and as a shared 
database via the bookkeeping and inventory control program. Everybody who needed 
access to the network had his or her own PC or Mac. We mostly used DOS back 
then, although with the introduction of Win 3.0 some people migrated to it. 
Everybody had access to a phone and there was one central fax in the 
administrative department. We installed and maintained PC's and Mac's for 
graphical applications. These applications provided output for typesetting 
printers (mostly via Postscript) or plotters. The supported applications where 
Adobe Photoshop, Aldus Pagemaker and AutoCad. We were also a reseller of the 
bookkeeping package that was used on the network.
<P>The printing could be spooled to several large laserprinter, a high-speed 
dot-matrix printer and a photographic typesetter.
<P>File services under Linux are probably the easiest of problems. I networked, 
recompiled, linked and started a small TCP/IP network using two computers in 
less than an hour. NFS is very comprehensive, as are telnet and other TCP/IP 
services. If you need to provide only a central server, then the following 
things need to be done :
<UL>
<LI>assign separate network numbers to your NICs
<LI>configure server and WSs for NFS
<LI>configure the exports file
</UL>
<P>For the workstations the following needs to be done
<UL>
<LI>assign separate node numbers
<LI>configure NFS
<LI>add your network directory to fstab
</UL>
<P>The main difference between Novell and NFS is in the administration. On a 
Netware server, all administration is kept central to the server. The only thing 
which needs to be done on a workstation is load an IPX driver at boot time. On a 
TCP/IP workstation, some administration is kept centrally and some 
administration is kept locally. This makes the process of maintaining and 
updating the network more laborious.
<P>Installing print services under Linux is generally much harder than under 
Netware. This is because all settings are to be added manually using a text 
editor in the file printcap. But, since this is a very structured file, with a 
rather small set of commands, why hasn't any body ever written a dialog system 
to scan printcap and present the user with an overview of available printers and 
the possibilities of adding and modifying printers and their settings ? This 
would be a great step forward in installing printers. Filters for different 
types of printers could be presented, so that the configuration on the network 
could be simplified (as an aside, RedHat provides such a system).
<P>The other part of printing is the operation of the queues. The lpd
system provides only command line control. But since this system is
also understood very fine, why haven't there been any attempts to
rewrite the lpd system for menu-driven operation ? After all, entering
a command or pressing a function key can invoke the same behaviour. All
queues and printers can be presented to the user, with the possibility
of providing more details. 
<P>The accounting program was written in Clipper and did not use Btrieve.
This means that all access to the data in the files generated a lot of
traffic over the network. This was alleviated by segmenting the network
in three parts so that the accounting department didn't interfere with
the other departments. The whole package ran under DOS. In the course
of years, the company which programmed the package made in 1994 the
transition from Clipper to FoxPro, and only as recent as 1997 they made
the transition from DOS to Windows (with the DOS version still being
sold and supported). 
<P>This presents us with a case of providing support for migration of
xBase dialects to Linux, while adding value to these languages through
transparent client/server computing. There should also be support for
people migrating from these DOS-based systems to Linux. There are a
whole lot of programmers who work alone and who make a living by
writing and maintaining small database applications for SOHO users
(using xBase and several 4GL tools which run under DOS). Providing
incentives and support for these people to migrate and to help their
customers migrate could give a double benefit to Linux. The key lays of
course in the way that support for these tools becomes available under
Linux or that conversion tools become available under Linux. 
<P>Printing support under Un*x and hence Linux has always strongly been oriented at 
typesetting. Providing support for Postscript should not be a problem under 
Linux. Adding a typesetter should be as easy as installing a printer on a server 
or on the network via a print server. There are already some strong graphical 
packages available for Linux. In this case, migration is a question of importing 
and/or converting graphical files and showing the user how to do the tasks he 
does normally with the new application.
<P>Plotting and/or cutting should be the same as printing. The application program 
is responsible for translating it's own internal drawing database into a format 
that can be used by the addressed peripheral.

<H3>Case 3 : The drafting department</H3>
<B>Drawing workstations, central database, drawing lock, usage
statistics</B>
<P>Drafting departments are a case where networking and central storage are really 
put to the test. It consists of a drawing database, which is a front-end to the 
drafting programs. User should be able to look at drawings, create, edit, delete 
and print drawings and collect usage statistics about drawings. In addition, 
only one user should be able to edit a drawing or part of a drawing at one time, 
and it should be possible to see who is editing what. If this all sounds like 
using a file system, then you are right. The difference is that you only use one 
type of file. I worked on one system in the previous case. It was written using 
Clipper as a front-end. I know of other environments where Autocad is used, but 
under a WinNT network, and there are some companies who deliver complete turnkey 
solutions consisting of powerful minicomputers and proprietary workstations for 
real high-end drafting work.
<P>Providing the incentive to migrate to Linux consists in providing a powerful 
server with large storage to accomodate all the drawings and a fast network to 
deliver them to the workstations. All workstations should be tuned to the max to 
deliver the utmost in graphic display and manipulation. Of course, utilities are 
necessary to convert the original drawing database and all the drawings. 
Networking should be flawlessly, and the program which uploads the drawing 
should provide an indication of the time necessary to get the file and where it 
is in the process.

<H3>Case 4 : A medium sized company II (20 users)</H3>
<B>Mini computer system, data entry and retrieval, commercial
department</B>

<P>This pertains to my previous job : a small transport company, which had ten 
years ago decided to implement a computer system to automate several tasks and 
to keep a database of all done transportations. They had taken WANG VS, which 
was back then a successfull system, with many advanced features. Custom software 
had been developed by an outside company first, by an in-house programmer later. 
The system contains a very comprehensible fax package, which can be used by 
anyone, but with strong security features. All outgoing messages are put in one 
queue, where the operator can change their times and/or priorities. All 
communication with the minicomputer is via terminals or via emulation cards on 
PC's. Accounting is also done on the minicomputer, but the two systems are not 
linked. The system is also equipped with a background task which controls batch 
tasks in a queue.
<P>There are many medium-sized companies which still use minicomputers and who have 
a problem shedding them, due to their highly specialized software. Migration 
from a Un*x system to a Linux system should not pose as much problems as 
migrating from a completely proprietary system to Linux.
<P>The main problem with these mini-computer systems is their high maintenance 
cost. That should be the most pressing reason to migrate, although Y2K could 
also be an incentive (not so with WANG VS, which is fully Y2K compliant).
<P>To provide the same functionality a DBMS package should be available which 
provides a data dictionary, a screen design package and a COBOL74 compiler with 
preprocessor to translate simple SQL SELECT statements. There are several 
packages available. One package aids in the migration from WANG PACE (the WANG 
DBMS) to Oracle (at the moment Oracle has only announced porting Oracle to 
Linux), while Software AG has tools to port WANG PACE applications and screens 
to ADABAS. On part of the compiler, where I work currently the porting is done 
from WANG to HP-UX using Microfocus Cobol. The security features of the database 
package should at least contain rollback recovery. The provided file-system 
should absolutely not be e2fs. Reliability should be favored over speed. When 
the power fails the file-system it self may be damaged, but these damages should 
be simple to clean-up. Damages in transactional files are to be repaired with 
the rollback option.
<P>On the hardware side, I noted that SCSI II provided enough speed to handle some 
20 users, but ... this was a system with a specialized IO-processor to handle 
all data transfers between main memory and all peripherals. To know how Linux 
fares in this, benchmarks should be run and numbers should be provided. In our 
last configuration (a 50 MHz CPU with 64 Mb), under a heavy load, our response 
time was under 10 s.
<P>Fax support must be provided to interactive applications, but also to batch 
applications.
<P>Batch processing of all tasks should be supported. Some programs can be started, 
used to enter selection data and then launched at will in the background or in 
the foreground at a time and day the user can enter. cron is fine for highly 
skilled people, but not for your data-entry clerk, so you need a front end which 
asks the date, time and repetition rate of your job. The application itself 
should be able to provide the required parameters.

<H3>Case 5 : OEM</H3>
<B>Cash registers, inventory control, proprietary hardware</B>

<P>This company builds cash register systems using mostly common PC hardware and 
one piece of proprietary hardware which interfaces to a magnetic card reader, a 
bar code reader, a money drawer and a keyboard/display/pricing printer. The cash 
register is connected via a network to a server which provides an inventory and 
a price list. Upon booting, the cash register connects to the network and loads 
its OS from the server. Every server has the possibility to connect at night to 
a central database to update its pricelists and to order items which are getting 
out of stock.
<P>For the cash register, a multi-user, multi-tasking OS is clearly overkill, while 
in the case of the server, multiple cash-registers could connect via the network 
to the server. The cash register would benefit, though, from multi-threading.
<P>Software development for servers and departmental systems is usually done with a 
4GL tool, with a higher-level language only for those parts which 4GL does not 
support.

<H3>Case 6 : Financial company (appr. 1000 users, agencies)</H3>
<B>Minicomputers, mainframe computers, terminals, workstations,
TCP/IP</B>

<P>The production environment of this company consists of 5 WANG VS minicomputers, 
used for data-entry, data-preprocessing and to connect agencies remotely through 
a telephone line. It consists also of a Bull mainframe system with two CPU's, 
128 Mb memory, 240 Gb of on-line storage capacity, a transaction processing 
system consisting of a network database and a screen editing and runtime 
program. All this is controlled using JCL and COBOL-74. TCP/IP is implemented 
between all systems.
<P>Replacing the minicomputers with Linux systems should be relatively straight 
forward. Since no WANG PACE is implemented on these, only migration of the 
COBOL-74 programma's needs to be done. Data entry and remote connection could be 
done using telnet and/or serial connections. Transferring data between mainframe 
and other systems is no problems. All this happens using FTP.
<P>Now, let us think really BIG! Could a case be made to build a system using 
Linux, which can replace a mainframe computer, given the specs above ? As said 
above, more numbers and benchmarks are needed on Linux and its implementations 
to know how powerful Linux can be. 

<H3>Case 7 : Software for highly skilled, non-technical people</H3>
<B>Doctors, dentists, lawyers, chemists, ...</B>

<P>These cases resemble the SOHO, but additionally need very specialized software 
to support their job. This software is mostly written by very specialised 
companies (niche software). What would they need in terms of software and 
maintenance to be convinced to migrate to Linux ?
<P>One of the answers is surely that they can migrate their existing applications 
easily and that conversion of their source code is supported by tools and API's 
which provide the same (or better) functionality than their old tools.
<P>Configuration of these systems may be more specialized. Normally the user would 
only use his system (enter customers, query the system). All administrative and 
configuration chores could be left to the implementor. The applications 
themselves are already as user-friendly as they can be, due to their specialised 
nature.

<H3>Conclusion</H3>

<P>I have presented several real-world cases, where Linux IMHO could be used. In 
most cases there are two recurring themes.
<P>The first is the need for migration support from other platforms to Linux. This 
support spans a whole range, varying from multi-platform compilers over database 
migration, up to replacement user applications.
<P>The second is the need to provide more user-friendly administration and 
operation. This may be as well through character-based dialog boxes as through 
GUI systems. In any case their access should be more centralised.
<P>Other themes which pop up are the following :
<UL>
<LI>Enhanced telecommunications support through more comprehensible fax
packages and a PABX support 
<LI>Enhanced reliabality
<LI>Numbers and benchmarks on Linux applications and configurations
<LI>Internationalised accounting packages
<LI>A customer database system which integrates with other apps
</UL>

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Jurgen Defurne <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif" 
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./wilson.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./kunkel.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P> 
<!--startcut ==========================================================-->
</BODY>
</HTML>
<!--endcut ============================================================-->