Feidhmíocht feidhmchláir líonra Linux. Réamhrá

Úsáidtear feidhmchláir ghréasáin anois i ngach áit, agus i measc na bprótacail iompair go léir, tá sciar an leon ag HTTP. Agus iad ag déanamh staidéir ar na nuances a bhaineann le forbairt feidhmchlár gréasáin, is beag aird a thugann an chuid is mó ar an gcóras oibriúcháin ina n-oibríonn na feidhmchláir seo i ndáiríre. Ní dhearna scaradh na forbartha (Dev) agus na hoibríochtaí (OPs) ach an scéal níos measa. Ach le méadú chultúr DevOps, tá forbróirí ag éirí freagrach as a n-iarratas a reáchtáil sa scamall, agus mar sin tá sé an-úsáideach dóibh eolas iomlán a bheith acu ar inneall an chórais oibriúcháin. Tá sé seo úsáideach go háirithe má tá tú ag iarraidh córas a imscaradh ar feadh na mílte nó na mílte nasc comhuaineach.

Tá na teorainneacha i seirbhísí gréasáin an-chosúil leo siúd i bhfeidhmchláir eile. Cibé an cothromóirí ualaigh nó freastalaithe bunachar sonraí é, bíonn fadhbanna comhchosúla ag na feidhmchláir seo go léir i dtimpeallacht ardfheidhmíochta. Cabhróidh tuiscint a fháil ar na teorainneacha bunúsacha seo agus conas iad a shárú go ginearálta leat feidhmíocht agus inscálaitheacht d'fheidhmchláir ghréasáin a mheas.

Tá an tsraith alt seo á scríobh agam mar fhreagra ar cheisteanna ó fhorbróirí óga ar mian leo a bheith ina n-ailtirí córais eolasacha. Ní féidir teicníochtaí leas iomlán a bhaint as feidhmchlár Linux a thuiscint go soiléir gan dul isteach sa bhunsraith faoin gcaoi a n-oibríonn siad ag leibhéal an chórais oibriúcháin. Cé go bhfuil go leor cineálacha feidhmchlár ann, sa tsraith seo ba mhaith liom feidhmchláir bunaithe ar an ngréasán a iniúchadh seachas feidhmchláir deisce cosúil le brabhsálaí nó eagarthóir téacs. Tá an t-ábhar seo dírithe ar fhorbróirí agus ailtirí atá ag iarraidh tuiscint a fháil ar conas a oibríonn cláir Linux nó Unix agus conas iad a struchtúrú le haghaidh ardfheidhmíochta.

Tá Linux seomra freastalaí córas oibriúcháin, agus is minic a ritheann d'fheidhmchláir ar an OS seo. Cé go rá liom "Linux", an chuid is mó den am is féidir leat glacadh leis go sábháilte go gciallaíonn mé gach córas oibriúcháin Unix-mhaith i gcoitinne. Mar sin féin, níl tástáil déanta agam ar an gcód a ghabhann leis ar chórais eile. Mar sin, má tá suim agat i FreeBSD nó OpenBSD, d’fhéadfadh go mbeadh do thorthaí éagsúil. Nuair a bhainim triail as rud éigin a bhaineann go sonrach le Linux, cuirim in iúl é.

Cé gur féidir leat an t-eolas seo a úsáid chun app a thógáil ón tús agus go ndéanfar é a bharrfheabhsú go foirfe, is fearr gan é sin a dhéanamh. Má scríobhann tú freastalaí gréasáin nua in C nó C++ d’fheidhmchlár gnó d’eagraíochta, b’fhéidir gurb é seo do lá deiridh sa phost. Mar sin féin, cabhróidh sé le roghnú na gclár atá ann cheana féin struchtúr na bhfeidhmchlár seo a bheith ar eolas agat. Beidh tú in ann córais atá bunaithe ar phróiseas a chur i gcomparáid le córais atá bunaithe ar snáitheanna chomh maith le córais atá bunaithe ar imeachtaí. Tuigfidh tú agus tuigfidh tú cén fáth a fheidhmíonn Nginx níos fearr ná Apache httpd, cén fáth gur féidir le feidhmchlár Python bunaithe ar Tornado freastal ar níos mó úsáideoirí i gcomparáid le feidhmchlár Python atá bunaithe ar Django.

ZeroHTTPd: Uirlis Foghlama

ZeroHTTPd Is freastalaí gréasáin é a scríobh mé ón tús in C mar uirlis teagaisc. Níl aon spleáchais sheachtracha aige, lena n-áirítear rochtain ar Redis. Reáchtálann muid ár nósanna imeachta Redis féin. Féach thíos le haghaidh tuilleadh sonraí.

Cé go bhféadfaimis teoiric a phlé go fada, níl aon rud níos fearr ná cód a scríobh, é a rith, agus gach ailtireacht freastalaí a chur i gcomparáid lena chéile. Is é seo an modh is soiléire. Mar sin, scríobhfaimid freastalaí gréasáin ZeroHTTPd simplí ag baint úsáide as gach múnla: próiseas-bhunaithe, snáithe-bhunaithe, agus imeacht-bhunaithe. A ligean ar a sheiceáil amach gach ceann de na freastalaithe agus a fheiceáil conas a fheidhmíonn siad i gcomparáid lena chéile. Cuirtear ZeroHTTPd i bhfeidhm i gcomhad C amháin uthash, cur i bhfeidhm tábla hash iontach a thagann i gcomhad ceannteidil amháin. I gcásanna eile, níl aon spleáchais ann, ionas nach gcuirfidh siad casta ar an tionscadal.

Tá go leor tuairimí sa chód chun cabhrú leat tuiscint a fháil. Toisc gur freastalaí gréasáin simplí é i gcúpla líne de chód, is creat íosta é ZeroHTTPd freisin le haghaidh forbairt gréasáin. Tá feidhmiúlacht theoranta aige, ach tá sé in ann freastal ar chomhaid statacha agus ar leathanaigh “dhinimiciúla” an-simplí. Caithfidh mé a rá go bhfuil ZeroHTTPd go maith chun foghlaim conas feidhmchláir Linux ardfheidhmíochta a chruthú. Tríd is tríd, fanann an chuid is mó de sheirbhísí gréasáin ar iarratais, déanann siad iad a sheiceáil agus a phróiseáil. Is é seo go díreach cad a dhéanfaidh ZeroHTTPd. Is uirlis foghlama é seo, ní táirgeadh. Níl sé iontach ag láimhseáil earráidí agus ní dócha go boast cleachtais slándála is fearr (OH yeah, a úsáidtear mé strcpy) nó cleasanna cliste na teanga C. Ach tá súil agam go ndéanann sé a chuid oibre go maith.

Feidhmíocht feidhmchláir líonra Linux. Réamhrá
Leathanach baile ZeroHTTPd. Is féidir leis cineálacha éagsúla comhaid a aschur lena n-áirítear íomhánna

Iarratas Leabhar Aoi

De ghnáth ní bhíonn feidhmchláir ghréasáin nua-aimseartha teoranta do chomhaid statacha. Tá idirghníomhaíochtaí casta acu le bunachair shonraí éagsúla, le caches, etc. Mar sin cruthóimid feidhmchlár gréasáin simplí ar a dtugtar "Guest Book" ina bhfágann cuairteoirí iontrálacha faoina n-ainmneacha. Stórálann na haoi-leabhair iontrálacha a fágadh níos luaithe. Tá cuntar cuairteoirí ag bun an leathanaigh freisin.

Feidhmíocht feidhmchláir líonra Linux. Réamhrá
Feidhmchlár gréasáin "Guest Book" ZeroHTTPd

Stóráiltear an cuntar cuairteoirí agus na haoileabhair in Redis. Maidir le cumarsáid le Redis, cuirtear na nósanna imeachta féin i bhfeidhm; ní bhraitheann siad ar an leabharlann sheachtrach. Ní lucht leanúna mór mé de chód homebrew a rolladh amach nuair a bhíonn réitigh atá ar fáil go poiblí agus a bhfuil dea-thástáil orthu. Ach is é cuspóir ZeroHTTPd ná staidéar a dhéanamh ar fheidhmíocht Linux agus rochtain ar sheirbhísí seachtracha, agus tá tionchar tromchúiseach feidhmíochta ag freastal ar iarratais HTTP. Ní mór dúinn an chumarsáid le Redis a rialú go hiomlán i ngach ceann dár ailtireachtaí freastalaí. I roinnt ailtireachtaí bainimid úsáid as glaonna blocála, agus úsáidimid nósanna imeachta imeacht-bhunaithe i gcásanna eile. Ní sholáthrófar an rialú seo má úsáideann tú leabharlann cliant seachtrach Redis. Ina theannta sin, ní chomhlíonann ár gcliant beag Redis ach roinnt feidhmeanna (eochair a fháil, a shocrú agus a incrimint; fáil agus ceangal le sraith). Ina theannta sin, tá an prótacal Redis thar a bheith galánta agus simplí. Ní gá duit fiú é a mhúineadh go speisialta. Léiríonn an fhíric go ndéanann an prótacal an obair ar fad i thart ar céad líne de chód cé chomh maith agus a ceapadh amach é.

Léiríonn an figiúr seo a leanas cad a dhéanann an t-iarratas nuair a iarrann an cliant (brabhsálaí). /guestbookURL.

Feidhmíocht feidhmchláir líonra Linux. Réamhrá
Conas a oibríonn an feidhmchlár aoi-leabhair

Nuair is gá leathanach aoileabhar a eisiúint, tá glao amháin chuig an gcóras comhad chun an teimpléad a léamh i gcuimhne agus trí ghlao líonra chuig Redis. Tá an chuid is mó den ábhar HTML don leathanach sa screenshot thuas sa chomhad teimpléad. Tá áitsealbhóirí speisialta ann freisin don chuid dhinimiciúil den ábhar: postálacha agus cuntar cuairteoirí. Faighimid iad ó Redis, cuir isteach sa leathanach iad agus cuirimid ábhar lánfhoirmithe ar fáil don chliant. Is féidir an tríú glao chuig Redis a sheachaint toisc go dtugann Redis an eochairluach nua ar ais nuair a ardaítear é. Mar sin féin, dár bhfreastalaí, a bhfuil ailtireacht asincrónach bunaithe ar imeachtaí aige, is tástáil mhaith iad go leor glaonna líonra chun críocha foghlama. Mar sin caithimid luach aischuir Redis faoi líon na gcuairteoirí agus ceistímid é le glao ar leith.

Ailtireacht freastalaí ZeroHTTPd

Táimid ag tógáil seacht leagan de ZeroHTTPd leis an bhfeidhmiúlacht chéanna ach ailtireachtaí éagsúla:

  • atriallach
  • Freastalaí forc (próiseas linbh amháin in aghaidh an iarratais)
  • Freastalaí réamhfhoclach (próisis a fhorghéilleadh roimh ré)
  • Freastalaí le snáitheanna feidhmithe (snáithe amháin in aghaidh an iarratais)
  • Freastalaí le cruthú réamh-snáithe
  • Ailtireacht bunaithe poll()
  • Ailtireacht bunaithe epoll

Déanaimid feidhmíocht gach ailtireachta a thomhas tríd an bhfreastalaí a luchtú le hiarratais HTTP. Ach nuair a dhéantar comparáid idir ailtireachtaí atá thar a bheith comhthreomhar, méadaítear líon na bhfiosruithe. Déanaimid tástáil trí huaire agus ríomhaimid an meán.

Modheolaíocht tástála

Feidhmíocht feidhmchláir líonra Linux. Réamhrá
Socrú tástála ualaigh ZeroHTTPd

Tá sé tábhachtach, agus tástálacha á reáchtáil, nach ritheann na comhpháirteanna go léir ar an meaisín céanna. Sa chás seo, tabhaíonn an OS forchostais sceidealaithe breise de réir mar a théann comhpháirteanna san iomaíocht don LAP. Ceann de na spriocanna is tábhachtaí den chleachtadh seo ná forchostais an chórais oibriúcháin a thomhas i ngach ceann de na hailtireachtaí freastalaí roghnaithe. Má chuirtear níos mó athróg isteach, déanfar dochar don phróiseas. Mar sin, is fearr a oibríonn an socrú sa phictiúr thuas.

Cad a dhéanann gach ceann de na freastalaithe seo?

  • load.unixism.net: Seo an áit a rithimid ab, fóntais Tagarmharc Apache. Gineann sé an t-ualach is gá chun ár n-ailtireacht freastalaí a thástáil.
  • nginx.unixism.net: Uaireanta ba mhaith linn níos mó ná cás amháin de chlár freastalaí a rith. Chun seo a dhéanamh, oibríonn freastalaí Nginx leis na socruithe cuí mar chothromóir ualaigh ag teacht as ab chuig ár bpróisis fhreastalaí.
  • zerohttpd.unixism.net: Anseo reáchtáilimid ár gcláir fhreastalaí ar sheacht ailtireacht dhifriúla, ceann amháin ag an am.
  • redis.unixism.net: Ritheann an freastalaí seo an deamhan Redis, áit a stóráiltear iontrálacha leabhar aíochta agus cuntair chuairteoirí.

Ritheann gach freastalaí ar chroílár an phróiseálaí céanna. Is é an smaoineamh ná uasfheidhmíocht gach ailtireachta a mheas. Ós rud é go ndéantar gach clár freastalaí a thástáil ar na crua-earraí céanna, is bunlíne é seo le haghaidh comparáide. Is éard atá i mo shocrú tástála ná freastalaithe fíorúla ar cíos ón Aigéan Digiteach.

Cad atá á thomhas againn?

Is féidir leat táscairí éagsúla a thomhas. Déanaimid measúnú ar fheidhmíocht gach ailtireachta i gcumraíocht ar leith trí na freastalaithe a luchtú le hiarratais ar leibhéil éagsúla comhthreomhaireachta: fásann an t-ualach ó 20 go 15 úsáideoir comhthráthach.

Torthaí tástála

Taispeánann an chairt seo a leanas feidhmíocht na bhfreastalaithe ar ailtireachtaí éagsúla ag leibhéil éagsúla comhthreomhara. Is é an y-ais líon na n-iarratas in aghaidh an tsoicind, tá an x-ais naisc comhthreomhar.

Feidhmíocht feidhmchláir líonra Linux. Réamhrá

Feidhmíocht feidhmchláir líonra Linux. Réamhrá

Feidhmíocht feidhmchláir líonra Linux. Réamhrá

Anseo thíos tá tábla leis na torthaí.

iarratais in aghaidh an tsoicind

comhthreomhaireacht
atriallach
forc
réamhfhoc
sruthú
réamhshruthú
vótaíocht
eapol

20
7
112
2100
1800
2250
1900
2050

50
7
190
2200
1700
2200
2000
2000

100
7
245
2200
1700
2200
2150
2100

200
7
330
2300
1750
2300
2200
2100

300
-
380
2200
1800
2400
2250
2150

400
-
410
2200
1750
2600
2000
2000

500
-
440
2300
1850
2700
1900
2212

600
-
460
2400
1800
2500
1700
2519

700
-
460
2400
1600
2490
1550
2607

800
-
460
2400
1600
2540
1400
2553

900
-
460
2300
1600
2472
1200
2567

1000
-
475
2300
1700
2485
1150
2439

1500
-
490
2400
1550
2620
900
2479

2000
-
350
2400
1400
2396
550
2200

2500
-
280
2100
1300
2453
490
2262

3000
-
280
1900
1250
2502
scaipeadh mór
2138

5000
-
scaipeadh mór
1600
1100
2519
-
2235

8000
-
-
1200
scaipeadh mór
2451
-
2100

10
-
-
scaipeadh mór
-
2200
-
2200

11
-
-
-
-
2200
-
2122

12
-
-
-
-
970
-
1958

13
-
-
-
-
730
-
1897

14
-
-
-
-
590
-
1466

15
-
-
-
-
532
-
1281

Ón ngraf agus ón tábla is féidir a fheiceáil nach bhfuil ach dhá imreoir fágtha againn os cionn 8000 iarratas comhuaineach: réamhfhorc agus epoll. De réir mar a mhéadaíonn an t-ualach, is measa a fheidhmíonn freastalaí pobalbhreithe ná freastalaí sruthaithe. Is iomaitheoir fiúntach í an ailtireacht réamhchruthaithe snáithe, fianaise ar cé chomh maith agus a sceidálann eithne Linux líon mór snáitheanna.

Cód Foinse ZeroHTTPd

Cód Foinse ZeroHTTPd anseo. Tá eolaire ar leith ann do gach ailtireacht.

ZeroHTTPd │ ├── 01_itriallach │ ├── main.c ├── 02_forking │ ├── príomh.c ├── 03_preforking │ └ └ └ │ │ _ú léamh │ ├── príomh.c ├── 04_prethreading │ ├── main.c ├── 05_poll │ ├── main.c ├── 06_epoll │ └ ── main.c ├ ─ ─ ├ ─ ├ ─ ├ file ─ ├ ─ poiblí ── html │ └── tux . png └── teimpléid └── leabhar aíochta └── index.html

Chomh maith le seacht n-eolaire do gach ailtireacht, tá dhá cheann eile san eolaire barrleibhéil: poiblí agus teimpléid. Ar an gcéad cheann tá an comhad index.html agus an íomhá ón gcéad gabháil scáileáin. Is féidir leat comhaid agus fillteáin eile a chur ann, agus ba cheart do ZeroHTTPd na comhaid statacha sin a sheirbheáil gan aon fhadhbanna. Má mheaitseálann an chonair sa bhrabhsálaí an chonair san fhillteán poiblí, lorgaíonn ZeroHTTPd an comhad index.html san eolaire seo. Gintear ábhar an aoileabhar go dinimiciúil. Níl aige ach leathanach baile, agus tá a ábhar bunaithe ar an gcomhad ‘templates/guestbook/index.html’. Cuireann ZeroHTTPd leathanaigh dhinimiciúla le síneadh go héasca. Is é an smaoineamh gur féidir le húsáideoirí teimpléid a chur leis an eolaire seo agus ZeroHTTPd a leathnú de réir mar is gá.

Chun na seacht bhfreastalaí ar fad a thógáil, rith make all ón eolaire barrleibhéil - agus beidh gach tógáil le feiceáil san eolaire seo. Cuardaíonn comhaid inrite na heolairí poiblí agus teimpléid san eolaire óna seoltar iad.

Linux API

Ní gá duit a bheith eolach ar an API Linux chun an fhaisnéis sa tsraith airteagal seo a thuiscint. Mar sin féin, molaim níos mó a léamh ar an ábhar seo; tá go leor acmhainní tagartha ar an Idirlíon. Cé go mbeidh muid i dteagmháil le roinnt catagóirí de Linux APIs, beidh ár bhfócas go príomha ar phróisis, snáitheanna, imeachtaí, agus an chairn líonra. Chomh maith le leabhair agus ailt faoin Linux API, molaim freisin mana a léamh le haghaidh glaonna córais agus feidhmeanna leabharlainne a úsáidtear.

Feidhmíocht agus Inscálaithe

Nóta amháin faoi fheidhmíocht agus scalability. Go teoiriciúil, níl aon bhaint eatarthu. Is féidir leat seirbhís gréasáin a bheith agat a oibríonn go han-mhaith, le ham freagartha de chúpla milleasoicindí, ach ní dhéanann sé scála ar chor ar bith. Mar an gcéanna, d'fhéadfadh go mbeadh feidhmchlár gréasáin lagfheidhmíochta a thógann cúpla soicind le freagairt, ach déanann sé scálaí de réir deich chun na mílte úsáideoir comhthráthach a láimhseáil. Mar sin féin, is meascán an-chumhachtach é an meascán d'ardfheidhmíocht agus scalability. Go ginearálta úsáideann feidhmchláir ardfheidhmíochta acmhainní go coigilteach agus mar sin déanann siad freastal go héifeachtach ar níos mó úsáideoirí comhthráthacha ar an bhfreastalaí, rud a laghdaíonn costais.

tascanna LAP agus I/O

Ar deireadh, sa ríomhaireacht bíonn dhá chineál tascanna féideartha ann i gcónaí: I/O agus LAP. Is gníomhaíochtaí I/O iad iarratais a fháil ar an Idirlíon (líonra I/O), comhaid a sheirbheáil (líonra agus diosca I/O), cumarsáid leis an mbunachar sonraí (líonra agus diosca I/O). Is féidir le roinnt ceisteanna bunachar sonraí a bheith beagán dian ar LAP (sórtáil, milliún toradh ar an meán, etc.). Tá formhór na bhfeidhmchlár gréasáin teoranta ag an I/O uasta is féidir, agus is annamh a úsáidtear an próiseálaí ag a lánacmhainneacht. Nuair a fheiceann tú go bhfuil go leor LAP á úsáid ag roinnt tascanna I/O, is dócha gur comhartha droch-ailtireachta feidhmchláir é. Ciallaíonn sé seo go gcuirtear acmhainní LAP amú ar bhainistíocht próisis agus ar athrú comhthéacs - agus níl sé seo go hiomlán úsáideach. Má tá tú ag déanamh rud éigin cosúil le próiseáil íomhá, comhshó comhad fuaime, nó foghlaim meaisín, éilíonn an feidhmchlár acmhainní cumhachtacha LAP. Ach i gcás fhormhór na n-iarratas ní hé seo an cás.

Foghlaim tuilleadh faoi ailtireachtaí freastalaí

  1. Cuid I: Ailtireacht atriallach
  2. Cuid II. Freastalaithe forc
  3. Cuid III. Freastalaithe réamh-forc
  4. Cuid IV. Freastalaithe le snáitheanna forghníomhaithe
  5. Cuid V. Freastalaithe réamh-snáithithe
  6. Cuid VI. Pol-bhunaithe ailtireacht
  7. Cuid VII. ailtireacht bunaithe ar eoll

Foinse: will.com

Add a comment