Performance problem since updating from 6.0-RELEASE
to 6.0-STABLE last friday
nate at root.org
Tue Nov 22 12:07:13 PST 2005
Hajimu UMEMOTO wrote:
>>>>>>On Thu, 17 Nov 2005 11:24:16 -0500
>>>>>>Pierre-Luc Drouin <pldrouin at pldrouin.net> said:
>>Ok, there is new development. I realized by playing with
>>debug.acpi.disabled="smbat", debug.acpi.disabled="smbat cmbat" and
>>debug.acpi.disabled="cmbat", that my laptop battery is not a smbat,
>>but a cmbat. When I played with hw.acpi.battery.info_expire after to
>>have applied the patch for acpi_smbat.c, it was freezing less often
>>because that sysctl variable was shared by both cmbat and smbat. So I
>>can only get battery status from cmbat (disabling cmbat disables the
>>use of acpiconf -i loop). To get the status of my battery via cmbat
>>was working fine up to 6.0-RELEASE (included), but makes my laptop to
>>freeze since I upgraded to 6.0-stable with Nov 10th sources. What
>>change related to cmbat between 6.0-release and 6.0-stable could be
> pldrouin> Has someone found how to fix this problem in -stable?
> Perhaps, I found the cause. acpi_cmbat_get_bif() is heavy process,
> and it was called only when ACPIIO_CMBAT_GET_BIF ioctl was issued
> explicitly, until smbat stuff was committed. However,
> acpiio_cmbat_get_bif() is called from every
> acpi_battery_get_battinfo() call, now.
> The attached patch will bring back to former behavior. Please try it
> and let me know the result.
> It is against 7-CURRENT as of today. If you want to try it on
> 6-STABLE, you need to apply following diff before applying it:
Thank you for tracking this down. It is interesting that BIF is
heavyweight while BST is not. I guess that is expected behavior by OEMs
which only test on Windows and so not everyone makes BIF simple. On my
laptops, BIF is as fast as BST.
I don't like the patch approach (changing the API), however. Let me
look at it and commit a fix that doesn't change the API.
More information about the freebsd-stable