Re: [PATCH] iio: dht11: Read bit stream from IRQ on falling edges only

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2023-02-05 21:41, pelzi@xxxxxxxxxxxxxxx wrote:
Following up on Harald's remark, I can provide some first comparison
data indeed:

Am 31.01.23 um 10:44 schrieb harald@xxxxxxxxx:
This seems like a really small benefit. And we would lose the
low state timings in debug output, which I personally find quite
convenient. Unless there is data, that this change actually improves
something for somebody, I'd reject it.

Running test script against the original kernel module (see below where on):

#     real [s]    user [s]  sys [s]  success fails  err per succ
1     222,068     0,515     0,506     83     96     115,66 %
2     223,152     0,603     0,493     86     99     115,12 %
*3*   223,502     0,563     0,411     91     68     74,73 %
*4*   209,626     0,431     0,189     100    15     15,00 %
*5*   209,689     0,46      0,193     100    19     19,00 %
*6*   220,35      0,413     0,315     100    35     35,00 %


Running the patched module:

# 	Real 	User 	Sys 	Successes 	Failures 	Error rate
1 	223,061 	0,459 	0,258 	88 	25 	28,41 %
2 	222,431 	0,561 	0,367 	75 	57 	76,00 %
3 	225,675 	0,436 	0,178 	92 	19 	20,65 %
4 	222,746 	0,444 	0,194 	98 	23 	23,47 %
5 	222,668 	0,416 	0,205 	97 	20 	20,62 %
*6* 	204,126 	0,34 	0,138 	100 	0 	0,00 %
*7* 	210,495 	0,393 	0,199 	100 	16 	16,00 %
*8* 	212,563 	0,447 	0,139 	100 	19 	19,00 %

All tests run on the same board, Allwinner H3 sold as BananaPi M2 Zero,
under kernel 6.2.0-rc5+. The devicetree overlay is setting the
input-debounce property of &pio to 5µs, or, because of the excessive
error rates of the original driver in this configuration, to 1µs (lines
marked with an asterisk).

The test simply tries to read temperature and humidity from the IIO/dht11 exposed input files every 2 seconds, immediately repeating after an error.

Real/User/Sys is determined by good ol' time command, successes and
failures are counted by the test script.

Two aspects strike:

1) the patched version of the driver is working satisfactory even with
5µs input-debounce filter, where the original driver shows more failed
than successful reads in this configuration.

2) The error rate is consistently lower with the patched driver
(67,9% to 33,8% average)

I believe to see similar results, i.e. a noticable improvement on the error rate, on my old trusted RaspberryPi 2B (without any devicetree fiddling, of course), however without quantitative comparison and based on some Raspbian
patch level rather than based on kernel 6.2.0-rc5+.

Of course I have only access to a handful of DHT22 devices, most probably
from the same production batch. But I think at least I'd like to stick
with the patched version, tbh.

Aside from different chips (and mostly the old DHT11) there are many things,
that influence timing: cable lenght, input characteristic etc.

It looks good, but we should still be careful.

Hope this helps, let me know if it'd pay to work on another version of
the patch!

Thanks, these are indeed interresting results. If you want to move this
forward, the next steps would be:
1) Sharing your test script - yes it's trivial, but still ...
2) A theoretical analysis about possible regressions depending on timer
resolution as mentioned in an earlier message.
3) Ideally figuring out, why your version performs better then what we
currently have. I have some suspicions, but better understanding might
lead to a better approach. E.g. maybe recording the other edges isn't
the problem so long as we ignore them during decoding?

As I see it, the main thing we are losing with your current proposal is
some diagnostic features. If we keep them as much as possible and have
regressions understood and covered, I see no reason to reject your idea.

best regards,
Harald

Best wishes

Andreas



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux