Date: Tue, 23 Jan 2018 11:27:28 +0000 From: Johannes Lundberg <johalun0@gmail.com> To: blubee blubeeme <gurenchan@gmail.com> Cc: Adrian Chadd <adrian.chadd@gmail.com>, Hans Petter Selasky <hps@selasky.org>, Ian Lepore <ian@freebsd.org>, freebsd-current <freebsd-current@freebsd.org> Subject: Re: Periodical interrupt storm when playing game with USB keyboard Message-ID: <CAECmPws_NNrrxpaNrqqX6yMN4gcdcUUY_fWD=qMC-GkRuFXrZg@mail.gmail.com> In-Reply-To: <CALM2mEnUm8miuSFpTHbn3q6s9b0bjQ6mM7CWSX_jiTY1dZ3DMQ@mail.gmail.com> References: <CAECmPwvDQBYw=mKJpZfUdKpXSC8GysZKSk0f9qaZEXCvy_QeMA@mail.gmail.com> <e2851846-0678-5cb9-0fce-e9cf49c41a2e@selasky.org> <CAECmPwvgMDBTUjhAERe4bKLgNYCim9bwdHw2JEL0RgTckMjSDw@mail.gmail.com> <CAECmPwtWr0t5_xLgg4NMxnjz317sqnfR9-ttH62szq4fwPdO=Q@mail.gmail.com> <64218617-98d2-0e6e-5872-e44106e61bf7@selasky.org> <1516569725.42536.99.camel@freebsd.org> <CAECmPws07U1=KkqgrjHotjnbPhX53n2L9Jj36guLruTJ-wc%2BCw@mail.gmail.com> <0aceb3ff-4938-1b29-d493-d83ce82cc853@selasky.org> <CAECmPwvr2on6_DDehnHd%2BRq1a1r2s-ib99MsabDSbxGo7Ykuhw@mail.gmail.com> <CAJ-VmoktYt4q4LsQ8x-n4xkmH=x6O=vWXUO-Zk4Gj74x8EGAFA@mail.gmail.com> <CALM2mEnUm8miuSFpTHbn3q6s9b0bjQ6mM7CWSX_jiTY1dZ3DMQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi all Some quick dtracing with play causing lag, vs play not causing lag (that is not hold down any key on a usb keyboard for too long). # dtrace -n 'profile-997hz /arg0/ { @[func(arg0)]=count(); }' Lag version -- snip -- linuxkpi.ko`idr_find 7 kernel`nanotime 8 kernel`__cap_rights_init 8 kernel`amd64_syscall 8 i915kms.ko`i915_gem_obj_lookup_or_create_vma 8 kernel`selfdfree 9 kernel`feed_matrix_S16LE 11 kernel`callout_lock 11 kernel`uma_zalloc_arg 11 kernel`z_feed_linear_S16LE 12 kernel`0xffffffff80f6877e 12 kernel`copyin 12 kernel`tsc_get_timecount_low_lfence 12 kernel`bzero 13 kernel`fget_unlocked 14 i915kms.ko`gen8_ppgtt_insert_pte_entries 14 kernel`callout_when 16 kernel`0xffffffff80f68fbc 26 kernel`kern_select 32 kernel`lock_mtx 50 kernel`spinlock_enter 53 kernel`bcopy 57 kernel`unlock_mtx 104 i915kms.ko`fw_domains_get 113 * kernel`ukbd_timeout 126 kernel`callout_reset_sbt_on 128 kernel`ukbd_interrupt 136* * kernel`softclock_call_cc 192* kernel`memcpy 284 kernel`cpu_idle 4257 * kernel`spinlock_exit 4312 kernel`lock_delay 11921* kernel`acpi_cpu_idle 15265 No lag version -- snip -- kernel`free 19 kernel`copyout 20 kernel`copyin 20 linuxkpi.ko`idr_find 21 kernel`selfdfree 24 kernel`tsc_get_timecount_low_lfence 25 kernel`__mtx_lock_flags 28 kernel`uma_zalloc_arg 30 kernel`bzero 31 i915kms.ko`gen8_ppgtt_insert_entries 31 drm.ko`drm_ioctl 32 kernel`fget_unlocked 36 kernel`amd64_syscall 37 kernel`kern_select 49 i915kms.ko`gen8_ppgtt_insert_pte_entries 61 kernel`0xffffffff80f68fbc 78 kernel`bcopy 90 i915kms.ko`fw_domains_get 228 kernel`spinlock_exit 284 kernel`cpu_idle 4698 kernel`acpi_cpu_idle 36288 I also tried rebuilding linux-c6_sdl-1.2 using get time functions in librt vs libc but no difference. Will dig deeper next time I have free time to spare. On Tue, Jan 23, 2018 at 2:33 AM, blubee blubeeme <gurenchan@gmail.com> wrote: > > > On Tue, Jan 23, 2018 at 9:48 AM, Adrian Chadd <adrian.chadd@gmail.com> > wrote: > >> Hi >> >> Yeah the timers eventually get coalesced unless someone's asking for a >> ridciulously accurate timer value. >> >> So is some driver asking for hyper-accurate callout timer that isn't >> being coalesced? hps, is there any useful debugging to try and find >> callouts that are requesting stupidly accurate timers? Maybe a dtrace >> probe on the callout schedule entry point? >> >> >> >> -adrian >> _______________________________________________ >> freebsd-current@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-current >> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org >> " >> > I'd say dtrace might be able to get you in the right direction very > quickly. > > I used SDL in the past for android apps and the code is very Linux > specific. I am sure there's some Linux related timers in there somewhere > that FreeBSD is returning nothing from and that's what's killing the > performance. > > I can almost guarantee that none of the SDL designers and or programmers > use any *BSD systems. > > The easiest solution would be to go look at the timer code and implement > something that FreeBSD can work with and try to get that upstream. > > These are just a few of the issues that will crop up when devs try to just > use shims to hook into the Linux kernel. Do the design work up front and > implement things in a native way or enjoy the jank. > > DTrace should be able to point you in the right direction relatively > quickly. > The DTraceBook: https://www.amazon.com/DTrace-Dynamic- > Tracing-Solaris-FreeBSD/dp/0132091518 > > Best >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAECmPws_NNrrxpaNrqqX6yMN4gcdcUUY_fWD=qMC-GkRuFXrZg>