1 |
On Fri, Feb 21, 2014 at 2:14 PM, J. Roeleveld <joost@××××××××.org> wrote: |
2 |
> On Thu, February 20, 2014 06:34, Canek Peláez Valdés wrote: |
3 |
>> On Wed, Feb 19, 2014 at 3:00 AM, J. Roeleveld <joost@××××××××.org> wrote: |
4 |
>>> On Tue, February 18, 2014 18:12, Canek Peláez Valdés wrote: |
5 |
>> |
6 |
>> [ snip ] |
7 |
>> |
8 |
>>>> Of course the larger a project is the *potential* number of bugs |
9 |
>>>> increases, but so what? With enough developers, users and testers, all |
10 |
>>>> bugs are *potentially* squashed. |
11 |
>>> |
12 |
>>> Agreed, but I know of enough large projects with large development teams |
13 |
>>> and even more users that don't get the most basic bugs fixed. |
14 |
>>> Quantity is not equivalent to Quality. |
15 |
>> |
16 |
>> I also agree with that. My point is that the systemd project has |
17 |
>> enough numbers of *talented* developers to do it. |
18 |
>> |
19 |
>> You can disagree, of course. |
20 |
> |
21 |
> Talented developer, maybe. |
22 |
> But not talented designers. |
23 |
|
24 |
That's subjective. For me (and many others), the design of systemd is sound. |
25 |
|
26 |
>>>> And systemd has a *much* wider community than any other init system. |
27 |
>>>> So it can handle a larger code base. |
28 |
>>> |
29 |
>>> Incorrect. How many people use systemd as opposed to SysV Init? |
30 |
>> |
31 |
>> Users? Like five thousand godzillions more. |
32 |
> |
33 |
> I tend to disagree. |
34 |
|
35 |
I meant that SysV has like five thousand godzillions more that |
36 |
systemd. Sorry for the confussion. |
37 |
|
38 |
> Systemd is ONLY on Linux. |
39 |
> SysV init can be found on alot of other platforms used in the world. Think |
40 |
> Solaris, AIX, HPuX and Linux machines that have not had their init-systems |
41 |
> changed. |
42 |
> |
43 |
>> Developers? It would not surprise me that systemd has several times |
44 |
>> more developers that SysV ever had. |
45 |
> |
46 |
> Maybe, but the developers back then still followed the unix-way: Have a |
47 |
> tool do one job and do it well. |
48 |
|
49 |
Again, for many of us that doesn't matter, and we don't take it like |
50 |
an article of faith. |
51 |
|
52 |
> From what I see from systemd, it tries to do too much and the single jobs |
53 |
> suffer from feature-bloat. |
54 |
|
55 |
Many of us believe they solve real problems, and they make our life easier. |
56 |
|
57 |
>> What's more, I think those developers are talented enough, to say the |
58 |
>> least. |
59 |
> |
60 |
> I miss talented designers. |
61 |
|
62 |
Wonder why? |
63 |
|
64 |
>>>>>> > SysVinit code size is about 10 000 lines of code, OpenRC contains |
65 |
>>>>>> > about 13 000 lines, systemd  about 200 000 lines. |
66 |
>>>>>> |
67 |
>>>>>> If you take into account the thousands of shell code that SysV and |
68 |
>>>>>> OpenRC need to fill the functionality of systemd, they use even more. |
69 |
>>> |
70 |
>>> The shell-code is proven to work though and provided with most of the |
71 |
>>> software. Where it isn't provided, it can be easily created. |
72 |
>>> I have seen (and used) complex start-up scripts for large software |
73 |
>>> implementations which complex dependencies. |
74 |
>>> Fortunately, later versions of those software packages have fixed that |
75 |
>>> mess to a large extend, but I wonder how well systemd unit-files can |
76 |
>>> work |
77 |
>>> in such an environment. |
78 |
>> |
79 |
>> You can read [1]. I think it provides a fair and impartial account of |
80 |
>> how to use systemd to start a complex service (NFS, by its author). |
81 |
> |
82 |
> I would not class NFS as a complex service. |
83 |
> I am talking about a dozen different services that need to be started in a |
84 |
> specific order where the next one is not allowed to start before the |
85 |
> previous one actually responds to TCP/IP connections. |
86 |
|
87 |
If you had read the link, you would have learned that NFS has 14 unit |
88 |
files, form a lot of daemons that have to run in concurrent form (and |
89 |
some of them only when others are not, etc.) It *IS* a complex |
90 |
service. |
91 |
|
92 |
> How would I configure that in systemd unit-files? |
93 |
|
94 |
Read the link |
95 |
|
96 |
> If I were to have sockets created in advance (does it work with TCP/IP |
97 |
> sockets?) I would get timeouts on the responses which would lead to some |
98 |
> services not starting correctly and ending up in limbo... |
99 |
|
100 |
You don't know how the socket activation works, do you? At boot time, |
101 |
if a service ask for a socket on port 1234 (and yes, they work on |
102 |
TCP/IP sockets), systemd opens the socket for the service, and the |
103 |
service *does not start yet*. |
104 |
|
105 |
When the *first* connection gets into the socket, systemd starts the |
106 |
service, and when it finishes starting, systemd passes the opened |
107 |
socket to it as an fd. Done, now the service has control of the |
108 |
socket, and it will until the services terminates; not when the |
109 |
connection closes (although you can configure it that way), when the |
110 |
*service* terminates. |
111 |
|
112 |
If several connections arrive to the socket *before* the service |
113 |
finishes starting up, the kernel automatically queues them, and when |
114 |
systemd handles the socket to the service, the service does it things |
115 |
for all of them. |
116 |
|
117 |
There is *no single* connection lost. Well, if a godzillion |
118 |
connections arrive before the service finishes starting up, the kernel |
119 |
queue is finite and some would be lost, but it would have to be a lot |
120 |
of connections arriving in a window of some microseconds. |
121 |
|
122 |
>>> Having sockets created prior to service start will not work as |
123 |
>>> components |
124 |
>>> will fail due to time-outs, leaving even a bigger mess. |
125 |
>> |
126 |
>> I could be wrong, but I believe the use of cgroups takes care of all |
127 |
>> that. If the service fails, systemd PID 1 can reliable detect it, and |
128 |
>> force the socket to close, and even reopen it for new connections if |
129 |
>> so configured by the administrator. |
130 |
> |
131 |
> Force the socket to close? That's nice, goodbye connection to one of the |
132 |
> databases. Hello auto-shutdown of services because something is clearly |
133 |
> wrong. |
134 |
|
135 |
You are not understanding me; read above. I meant that if the service |
136 |
*crashes* (and therefore the connections are gone anyway), using |
137 |
cgroups systemd can reliable detect it and close the associated |
138 |
sockets (if not closed already), and (if so configured), open the |
139 |
socket again and wait for connections while the service is restarted. |
140 |
|
141 |
systemd is *NOT* xinitd. |
142 |
|
143 |
> With auto-restart, that will create an interesting sequence of events |
144 |
> designed to really break the installation. |
145 |
|
146 |
It does not; thanks mostly due to the kernel, it works pretty great. |
147 |
|
148 |
>>>>> If that code will fail, this wouldn't be critical at system level. |
149 |
>>>>> Thus scope of fatal error is limited. |
150 |
>>>> |
151 |
>>>> Also in systemd, since most of its code is not critical (again; |
152 |
>>>> logind, datetimed, localed, etc., failing, has no impact whatsoever on |
153 |
>>>> the rest of the system). |
154 |
>>> |
155 |
>>> I understand the usecase for "logind", but what is the point of a daemon |
156 |
>>> to supply the time (datetimed)? Is this a full replacement for "ntpd"? |
157 |
>>> And what does "localed" do? That's configured once in the environment |
158 |
>>> and |
159 |
>>> should be handled using environment variables. |
160 |
>> |
161 |
>> I'm sorry, but *everything* you are asking for is in the link I gave |
162 |
>> you that you qualified it of "not necessary for this discussion" (I |
163 |
>> also pointed someone else to [2]). If you are really interested in the |
164 |
>> answers, go on and read it there. |
165 |
>> |
166 |
>> It's certainly better than hearing it from me. |
167 |
> |
168 |
> Maybe, but based on the name, and I am assuming the names have some sort |
169 |
> of relevance, localed makes no sense. |
170 |
|
171 |
Roeleveld, if you had bothered to read the several links that I have |
172 |
provided, you could answer all your question and see that you are |
173 |
wrong about many things about systemd. |
174 |
|
175 |
That you haven't done it, and that many times that I answer any of |
176 |
your points, you ignore that one and go on another tangent trying to |
177 |
discredit systemd, I believe you are not trying to have an honest |
178 |
technical conversation. |
179 |
|
180 |
Therefore, I will stop engaging with you at this point. |
181 |
|
182 |
Regards. |
183 |
-- |
184 |
Canek Peláez Valdés |
185 |
Posgrado en Ciencia e Ingeniería de la Computación |
186 |
Universidad Nacional Autónoma de México |