Wineserver causing heavy CPU load

Open forum for end-user questions about Wine. Before asking questions, check out the Wiki as a first step.
Forum Rules
Locked
Bad2theBone
Newbie
Newbie
Posts: 3
Joined: Mon Apr 28, 2008 4:27 pm

Wineserver causing heavy CPU load

Post by Bad2theBone »

I am running Fedora 8 uname -r = 2.6.24.4-64.fc8 on my box with Wine 0.9.58. When I first installed it I noticed that my CPU usage jumped and stayed at 100% with wineserver taking > 85%. I killed the wineserver process and it dropped down, however it soon jumped back up when wineserver restarted itself. I then killed it again and all related processes and disabled it from starting as a damen at boot time. Is there anything that I should be looking for to fix this? Also is there any real advantage of running wineserver all the time as a damen?

TIA
Scott
Dan Kegel

Wineserver causing heavy CPU load

Post by Dan Kegel »

On Mon, Apr 28, 2008 at 2:35 PM, Bad2theBone <[email protected]> wrote:
I am running Fedora 8 uname -r = 2.6.24.4-64.fc8 on my box with Wine 0.9.58.
When I first installed it I noticed that my CPU usage jumped and
stayed at 100% with wineserver taking > 85%.
I've seen that, too. If you use strace -p on it, what is it doing?
Here's my report:
http://winehq.org/pipermail/wine-devel/ ... 64999.html
I killed the wineserver process and it dropped down,
however it soon jumped back up when wineserver restarted itself.
Wineserver is started by wine whenever it's needed.
I then killed it again and all related processes and disabled
it from starting as a damen at boot time.
AFAIK, it doesn't start at boot time; not sure what you're talking about.
It can't, since it's a per-user daemon.
- Dan
David Gerard

Wineserver causing heavy CPU load

Post by David Gerard »

2008/4/28 Dan Kegel <[email protected]>:
On Mon, Apr 28, 2008 at 2:35 PM, Bad2theBone <[email protected]> wrote:
I am running Fedora 8 uname -r = 2.6.24.4-64.fc8 on my box with Wine 0.9.58.
When I first installed it I noticed that my CPU usage jumped and
stayed at 100% with wineserver taking > 85%.
I've seen that, too. If you use strace -p on it, what is it doing?
Here's my report:
http://winehq.org/pipermail/wine-devel/ ... 64999.html
I can't give logs or traces, but I can give you an anecdote - a year
or so ago, I used Google's original Linux port of Picasa (the one
which comes with its own custom Wine) on Ubuntu Edgy a *lot*. And I
would see explorer.exe using absolutely as much CPU as it could. I
noticed this because my laptop kept heating up to the point where it
shut itself down ...

(Now I run the Windows version of Picasa under stock Wine ;-) )

The symptoms sound similar, I'm wondering if it's related.

Oh, and explorer.exe's VM footprint was listed in top (which I know is
not entirely accurate) as about a gigabyte.


- d.
Dan Kegel

Wineserver causing heavy CPU load

Post by Dan Kegel »

On Mon, Apr 28, 2008 at 3:09 PM, David Gerard <[email protected]> wrote:
I can't give logs or traces, but I can give you an anecdote - a year
or so ago, I used Google's original Linux port of Picasa (the one
which comes with its own custom Wine) on Ubuntu Edgy a *lot*. And I
would see explorer.exe using absolutely as much CPU as it could. I
noticed this because my laptop kept heating up to the point where it
shut itself down ...

(Now I run the Windows version of Picasa under stock Wine ;-) )
Have you tried the latest release of Picasa for Linux?
It's still a somewhat old Wine, but it shouldn't behave like that.
We (I work on Picasa for Linux) hope to update Picasa for Linux to
wine-1.0 sometime this summer.
The symptoms sound similar, I'm wondering if it's related.
Nah. The recent runaway explorer.exe was IME-related.
Oh, and explorer.exe's VM footprint was listed in top (which I know is
not entirely accurate) as about a gigabyte.
That's normal, not very interesting. RSS footprint is more interesting,
as would be strace -p output.
- Dan
Bad2theBone
Newbie
Newbie
Posts: 3
Joined: Mon Apr 28, 2008 4:27 pm

Re: Wineserver causing heavy CPU load

Post by Bad2theBone »

Dan Kegel wrote:On Mon, Apr 28, 2008 at 2:35 PM, Bad2theBone

I've seen that, too. If you use strace -p on it, what is it doing?
Here's my report:
http://winehq.org/pipermail/wine-devel/ ... 64999.html

It appears to do the same. I had installed IEs4Linux which apparently installs it's own copy of wine. I also have the system monitor applet on my top bar (gnome) and as soon as IE6 starts sysmon shows CPU time at 100%. My strace -p looked similar to yours but much longer. I also noticed that all processes remained active even though I closed IE. Doing a ps -ef shows the below statuses:

scott 7037 1 0 20:39 ? 00:00:00 bash /home/scott/bin/ie6
scott 7038 7037 25 20:39 ? 00:00:40 /home/scott/.ies4linux/ie6/drive_c/Program Files/Internet Explorer/IEXPLORE.EXE
scott 7039 7037 0 20:39 ? 00:00:00 bash /home/scott/bin/ie6
scott 7042 1 53 20:39 ? 00:01:25 /usr/lib/../bin/wineserver
scott 7044 1 0 20:39 ? 00:00:00 C:\windows\system32\wineboot.exe --init
scott 7045 7044 0 20:39 ? 00:00:00 C:\windows\system32\winedevice.exe MountMgr
scott 7049 1 0 20:39 ? 00:00:00 C:\windows\system32\explorer.exe /desktop


AFAIK, it doesn't start at boot time; not sure what you're talking about.
It can't, since it's a per-user daemon.
- Dan
When I installed wine I found that it created a process damon in system services gui that was checked and was running. I did not actually check to see if it had setup to restart on reboot. I believe that in the GUI if the service is cheacked it will be auto started on boot.
Dan Kegel

Wineserver causing heavy CPU load

Post by Dan Kegel »

On Thu, May 1, 2008 at 5:56 PM, Bad2theBone <[email protected]> wrote:
I had installed IEs4Linux...as soon as IE6 starts sysmon shows CPU time at 100%.
That may or may not be related; a lot of apps burn more CPU in Wine than
in IE.
I also noticed that all processes remained active even though I closed IE.
... Doing a ps -ef shows:
scott 7037 1 0 20:39 ? 00:00:00 bash /home/scott/bin/ie6
scott 7038 7037 25 20:39 ? 00:00:40 /home/scott/.ies4linux/ie6/drive_c/Program Files/Internet Explorer/IEXPLORE.EXE
That might just mean that IE didn't exit properly when you closed it.

Anyway, thanks for the data.
- Dan
Bad2theBone
Newbie
Newbie
Posts: 3
Joined: Mon Apr 28, 2008 4:27 pm

To Dan Kegel

Post by Bad2theBone »

I just tried running other M$ apps (MSOffice2K) and they seem to be fine, not CPU time eaters, only IE6. Isn't IEs4Linux just a script that installs different IE versions? In other words it won't make a difference if I manually install IE6 through the wine CLI or even IE7?
Mario Goebbels

Wineserver causing heavy CPU load

Post by Mario Goebbels »

I've seen that, too. If you use strace -p on it, what is it doing?
I've the same issue under Solaris, depending on what tool I run. I can
reproduce it for instance with uTorrent (there isn't a decent torrent
client that compiles on Solaris without sacrificing a newborn). I've
trussed it (strace equivalent) and the result is a logfile full of
exactly this:

pollsys(0x080D95F8, 72, 0x08047A38, 0x00000000) = 1
recvmsg(26, 0x080B4294, 0) = 0

Basically polling the living crap out of something.

-mg
Tomservo
Newbie
Newbie
Posts: 2
Joined: Thu May 08, 2008 4:55 am

Post by Tomservo »

I figured I'd try dtrace for a change, since I have it here. Running it for a few seconds results in this:

Code: Select all

hyperborea:~ > pfexec dtrace -n 'pid712:::entry { @n[probefunc] = count(); }'
dtrace: description 'pid712:::entry ' matched 6880 probes
^C

  _bufsync                                                          1
  _dowrite                                                          1
  _flsbuf                                                           1
  _morecore                                                         1
  periodic_save                                                     1
  putc_unlocked                                                     1
  set_periodic_save_timer                                           1
  __cerror                                                          2
  __fcntl_syscall                                                   2
  _brk_unlocked                                                     2
  _fflush_u                                                         2
  _findbuf                                                          2
  _findiop                                                          2
  _sbrk_unlocked                                                    2
  _setbufend                                                        2
  _setorientation                                                   2
  _wrtchk                                                           2
  abandon_mutexes                                                   2
  close_handle                                                      2
  debug_exit_thread                                                 2
  destroy_thread                                                    2
  fchdir                                                            2
  fclose                                                            2
  fcntl                                                             2
  fdopen                                                            2
  free_ptid                                                         2
  generate_debug_event                                              2
  getpid                                                            2
  ioctl                                                             2
  isatty                                                            2
  isseekable                                                        2
  kill_console_processes                                            2
  kill_thread                                                       2
  lmutex_lock                                                       2
  lmutex_unlock                                                     2
  lstat64                                                           2
  remove_process_thread                                             2
  rename                                                            2
  req_close_handle                                                  2
  s_fcntl                                                           2
  save_all_subkeys                                                  2
  sbrk                                                              2
  strcpy                                                            2
  strrchr                                                           2
  save_branch                                                       3
  __open64_syscall                                                  4
  _private_open64                                                   4
  cleanup_clipboard_thread                                          4
  cleanup_thread                                                    4
  close_thread_desktop                                              4
  destroy_thread_windows                                            4
  free_msg_queue                                                    4
  fstat64                                                           4
  get_process_winstation                                            4
  open64                                                            4
  remove_thread_hooks                                               4
  fd_destroy                                                        6
  clear_apc_queue                                                   8
  getiop                                                            8
  ___errno                                                         10
  _aio_close                                                       10
  _private_close                                                   10
  close                                                            10
  expose_window                                                    11
  get_class_atom                                                   11
  rect_in_region                                                   11
  req_get_window_info                                              11
  req_set_window_pos                                               11
  union_region                                                     11
  xor_region                                                       11
  create_region_from_req_data                                      12
  _xflsbuf                                                         14
  remove_timeout_user                                              16
  free_async_queue                                                 18
  clip_children                                                    22
  get_ptid_entry                                                   22
  get_thread_from_id                                               22
  req_get_thread_input                                             22
  get_child_update_flags                                           23
  link_timer                                                       27
  msg_queue_add_queue                                              27
  msg_queue_remove_queue                                           27
  msg_queue_satisfied                                              27
  reset_event                                                      27
  set_event                                                        27
  timer_callback                                                   27
  find_window_to_repaint                                           33
  get_desktop_window                                               33
  subtract_non_overlapping                                         33
  req_redraw_window                                                34
  release_hook_chain                                               44
  req_finish_hook_chain                                            44
  req_get_hook_info                                                44
  req_start_hook_chain                                             44
  redraw_window                                                    45
  validate_whole_window                                            45
  check_fd_events                                                  54
  msg_queue_signaled                                               54
  set_next_timer                                                   54
  copy_region                                                      56
  wake_up                                                          56
  get_tick_count                                                   60
  subtract_overlapping                                             66
  subtract_region                                                  66
  crop_region_to_win_rect                                          79
  next_user_handle                                                 80
  make_clean                                                       84
  req_get_message                                                  87
  inc_queue_paint_count                                            90
  thread_timeout                                                   98
  set_update_region                                               101
  set_fd_events                                                   108
  req_get_window_children                                         110
  set_reply_data_size                                             110
  req_get_visible_region                                          111
  get_update_flags                                                112
  req_set_caret_info                                              112
  req_select                                                      123
  req_get_update_region                                           124
  end_wait                                                        125
  send_thread_wakeup                                              125
  wake_thread                                                     125
  get_active_hooks                                                131
  get_visible_region                                              133
  add_timeout_user                                                140
  check_wait                                                      150
  get_region_data_and_free                                        156
  find_child_to_repaint                                           176
  get_user_full_handle                                            199
  req_get_window_property                                         200
  get_queue_hooks                                                 219
  get_global_hooks                                                223
  get_desktop_obj                                                 256
  get_thread_desktop                                              256
  __writev                                                        266
  writev                                                          266
  free_region                                                     301
  is_visible                                                      302
  t_splay                                                         359
  create_empty_region                                             445
  t_delete                                                        457
  intersect_overlapping                                           499
  intersect_region                                                499
  sprintf                                                         525
  coalesce_region                                                 532
  region_op                                                       565
  set_region_extents                                              577
  set_region_client_rect                                          610
  is_region_empty                                                 643
  req_set_window_info                                             682
  set_region_rect                                                 698
  offset_region                                                   889
  _smalloc                                                       1097
  cleanfree                                                      1345
  get_user_object                                                1350
  handle_to_entry                                                1437
  realfree                                                       1563
  __write                                                        1634
  write                                                          1634
  is_hook_active                                                 1683
  call_req_handler                                               1761
  read_request                                                   1761
  thread_poll_event                                              1763
  mem_alloc                                                      1852
  memset                                                         1862
  __read                                                         1907
  read                                                           1907
  _malloc_unlocked                                               2002
  malloc                                                         2002
  _free_unlocked                                                 3529
  free                                                           3529
  mutex_lock                                                     5531
  mutex_lock_impl                                                5531
  mutex_unlock                                                   5531
  event_signaled                                                 6144
  add_queue                                                      6171
  remove_queue                                                   6173
  get_handle_obj                                                 6431
  get_handle                                                     6433
  save_subkeys                                                   8488
  dump_value                                                    14151
  fputc                                                         28086
  putc                                                          28086
  fprintf                                                       32571
  _realbufend                                                   32588
  getxfdat                                                      32590
  _ndoprnt                                                      33096
  dump_path                                                     43652
  memcpy                                                        51934
  dump_strW                                                     64130
  ferror                                                        65667
  fwrite                                                       119223
  _fwrite_unlocked                                             119224
  __so_recvmsg                                                 516960
  _so_recvmsg                                                  516960
  kill_process                                                 516960
  receive_fd                                                   516960
  recvmsg                                                      516960
  gettimeofday                                                 516961
  process_poll_event                                           516961
  __pollsys                                                    517015
  _pollsys                                                     517015
  poll                                                         517015
  __divdi3                                                     517021
  get_fd_user                                                  518723
  get_unix_fd                                                  520753
  grab_object                                                  529576
  release_object                                               529591
Locked