Welcome, Guest. Please login or register.

Author Topic: NetSurf 3.6 web browser released!  (Read 19368 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline Oldsmobile_Mike

Re: NetSurf 3.6 web browser released!
« Reply #14 on: November 22, 2016, 02:31:48 AM »
Not bad!  Haven't had a chance to play around with this for a while, I forgot what my settings were and just threw it on there, along with a copy of that guigfx.library it looks like it now needs.


  • 1st load of amiga.org 35 seconds, reload in 21 seconds
  • Wikipedia
  • CNN
  • Google News

Attached a few screenshots.

I do wish that the minimize gadget worked, lol.  ;)

After I took these screenshots I tried playing around with some of the preferences.  Nice that they work, I got a few visits from the guru but eventually was able to get it to open up on its own screen instead of of Workbench.  Very nice! :banana:
Amiga 500: 2MB Chip|16MB Fast|30MHz 68030+68882|3.9|Indivision ECS|GVP A500HD+|Mechware card reader + 8GB CF|Cocolino|SCSI DVD-RAM
Amiga 2000: 2MB Chip|136MB Fast|50MHz 68060|3.9|Indivision ECS + GVP Spectrum|Mechware card reader + 8GB CF|AD516|X-Surf 100|RapidRoad|Cocolino|SCSI CD-RW
 Amiga videos and other misc. stuff at https://www.youtube.com/CompTechMike/videos
 

Offline olsen

Re: NetSurf 3.6 web browser released!
« Reply #15 on: November 22, 2016, 08:26:54 AM »
Quote from: gregthecanuck;816699
@olsen

Has the slab allocator from OS4 been back-ported to 3.x? Is that what you are testing?
No, this is something very different and very much simpler in design. I was suprised that it worked so well after having spent barely a week building and testing it.

Both the AmigaOS4 slab allocator and the one which is part of clib2 (available at https://sourceforge.net/projects/clib2/ and https://github.com/adtools/clib2) are based upon the same 1994/2001 papers written by Jeff Bonwick, who introduced the concept. For reference I looked at the Linux and FreeBSD slab allocators, but then found that the slab allocator used by "memcached" was easiest to understand for me in the context described by the papers.

The papers which I read in addition to the two by Jeff Bonwick strongly supported the idea that using a slab allocator at the application level, e.g. linked against the NetSurf code, made good sense. It was not necessary to have the slab allocator in the operating system to get useful results.

A slab allocator at the operating system level needs to cater for caching requirements, it has to provide for proper data alignment, and it has to watch very carefully how much management overhead it deploys to herd the slabs. A slab allocator at the application level, linked against NetSurf, can ignore some of those constraints, making it simpler in design.

That's what landed in clib2, and I am still working on making it perform better. One week of design and implementation clearly is not sufficient ;)
 

Offline gregthecanuck

  • Full Member
  • ***
  • Join Date: Feb 2003
  • Posts: 169
  • Country: ca
    • Show only replies by gregthecanuck
Re: NetSurf 3.6 web browser released!
« Reply #16 on: November 22, 2016, 10:23:03 AM »
Nice. Thanks for the background information.

Had you considered TLSF? I recall a while ago there was some mud-slinging as to which was "better".
 

Offline olsen

Re: NetSurf 3.6 web browser released!
« Reply #17 on: November 22, 2016, 10:45:30 AM »
Quote from: gregthecanuck;816707
Nice. Thanks for the background information.

Had you considered TLSF?
No, I stopped searching for an alternative solution when the slab allocator appeared to do the job.

Quote
I recall a while ago there was some mud-slinging as to which was "better".
I'll have another look at TLSF. From what I could learn quickly about TLSF, it is a technically more complex approach than what a slab allocator could get away with. The management overhead (accounting data structures) appears to be much lower, and the smallest usable fragment size is also lower than what my own slab allocator allows for.

However, much of that overhead comes about because clib2 now supports three different back-ends for allocating and managing memory. The management data structures are not strictly needed for the memory pool and slab allocator back-ends, so there is quite some room for improvement in clib2.

I doubt that I will be replacing the slab allocator in clib2 with TLSF any time soon. Instead, I'll work on improving the clib2 memory management system.
 

Offline wawrzon

Re: NetSurf 3.6 web browser released!
« Reply #18 on: November 22, 2016, 12:05:35 PM »
@gregthecanuck

it seems tlsf is clearly better at keeping the performance up while allocating and reallocating small memory bits, but it isnt perfectly compatible with legacy amiga software. which shouldnt be an issue as long as it is linked statically as part of a standard c library.

@olsen:

according to wikipedia, the behaviour we are experiencing with slab, may be a known handicap, sorry its only on a german page:

https://de.wikipedia.org/wiki/Slab_allocator

down the page:

Quote

Ablauf einer Speicheranforderung[Bearbeiten | Quelltext bearbeiten]

Aus dem bisherigen ergibt sich der typische Ablauf einer Speicheranforderung:
1.Es wird versucht, ein Objekt aus dem per-CPU-Cache zu entnehmen.
2.Schlägt dies fehl, wird ein Objekt aus einem bereits bestehenden Slab geliefert.
3.Falls auch keine freien Objekte mehr in den Slabs vorhanden sind, muss ein neuer Slab angelegt werden, mit dem Umweg über das übergeordnete Buddy-System.

Der negative Einfluss auf die Caches und somit auf die Performance steigt dabei von Punkt zu Punkt.


the mentioned buddy allocator is afaik the default one in bernds ixemul library >6x.x, which may explain, why it performs well in comparison. maybe some more considerations should be spent on that issue?
 

Offline utri007

Re: NetSurf 3.6 web browser released!
« Reply #19 on: November 22, 2016, 12:16:55 PM »
Quote from: olsen;816708


I doubt that I will be replacing the slab allocator in clib2 with TLSF any time soon. Instead, I'll work on improving the clib2 memory management system.


TLSF didn't help with Netsurf.
ACube Sam 440ep Flex 800mhz, 1gb ram and 240gb hd and OS4.1FE
A1200 Micronic tower, OS3.9, Apollo 060 66mhz, xPert Merlin, Delfina Lite and Micronic Scandy, 500Gb hd, 66mb ram, DVD-burner and WLAN.
A1200 desktop, OS3.9, Blizzard 060 66mhz, 66mb ram, Ide Fix Express with 160Gb HD and WLAN
A500 OS2.1, GVP+HD8 with 4mb ram, 1mb chip ram and 4gb HD
Commodore CDTV KS3.1, 1mb chip, 4mb fast ram and IDE HD
 

Offline olsen

Re: NetSurf 3.6 web browser released!
« Reply #20 on: November 22, 2016, 01:31:10 PM »
Quote from: wawrzon;816713
according to wikipedia, the behaviour we are experiencing with slab, may be a known handicap, sorry its only on a german page:

https://de.wikipedia.org/wiki/Slab_allocator
The issues mentioned in this context appear to refer to the kernel implementation of the slab allocator. The kernel slab allocator should care about proper alignment of allocations, so as to avoid friction with multiple processors and non-uniform memory access.

The slab allocator in clib2 sidesteps these issues by mostly ignoring them. Unless I made a mistake, allocations are currently aligned to 64 bit word boundaries because of the chunk allocation granularity (this may change, though). No optimizations for multiprocessing or NUMA are needed.

Quote

the mentioned buddy allocator is afaik the default one in bernds ixemul library >6x.x, which may explain, why it performs well in comparison. maybe some more considerations should be spent on that issue?
From what I know buddy allocators are much more complex in operation than the slab allocator. For example, the highly configurable dlmalloc allocator, including documentation comments, is more than 5000 lines long.

In a buddy allocator effort is spent on merging chunks, and depending upon the order in which allocations are being made, buddies may not be released in the order which allows them to be merged, slowly increasing fragmentation over time. dlmalloc is designed to make best-fit allocations, as opposed to first-fit, which contributes to the complexity and the effort spent (first-fit is fast at the expense of quickly increasing fragmentation over time).

By comparison, a slab allocator can deliver both best-fit and first-fit performance at the same time without spending any effort on merging chunks. Furthermore, it can deliver this in nearly constant time, i.e. O(1), discounting that it has to obtain the pages which it manages from somewhere ;)
 

Offline olsen

Re: NetSurf 3.6 web browser released!
« Reply #21 on: November 22, 2016, 01:33:18 PM »
Quote from: utri007;816715
TLSF didn't help with Netsurf.


Why did it fail?
 

Offline utri007

Re: NetSurf 3.6 web browser released!
« Reply #22 on: November 22, 2016, 04:01:21 PM »
Quote from: olsen;816720
Why did it fail?


I don't know but it didn't help. There was tlsfmen.lha in aminet, wich is now deleted some reason. It was started from shell anytime according to the guide.
ACube Sam 440ep Flex 800mhz, 1gb ram and 240gb hd and OS4.1FE
A1200 Micronic tower, OS3.9, Apollo 060 66mhz, xPert Merlin, Delfina Lite and Micronic Scandy, 500Gb hd, 66mb ram, DVD-burner and WLAN.
A1200 desktop, OS3.9, Blizzard 060 66mhz, 66mb ram, Ide Fix Express with 160Gb HD and WLAN
A500 OS2.1, GVP+HD8 with 4mb ram, 1mb chip ram and 4gb HD
Commodore CDTV KS3.1, 1mb chip, 4mb fast ram and IDE HD
 

Offline Oldsmobile_Mike

Re: NetSurf 3.6 web browser released!
« Reply #23 on: November 22, 2016, 04:28:45 PM »
Quote from: utri007;816724
I don't know but it didn't help. There was tlsfmen.lha in aminet, wich is now deleted some reason. It was started from shell anytime according to the guide.

I use TLSFMem on all my Amiga's.  It was created by Chris Hodges up to version 1.6 then patched to 1.9 by Cosmos, AFAIR.  It was pulled when Chris yanked all the rest of his Amiga software, for whatever (@#*$%&(#*$%& reason.  :(  It is a fantastic program for reducing memory fragmentation, I can't say how it reacts with NetSurf, specifically, but for just general day-to-day Amiga tasks - it's always the very first thing in my Startup-Sequence.  PM me your email address if you'd like me to fwd you a copy.
Amiga 500: 2MB Chip|16MB Fast|30MHz 68030+68882|3.9|Indivision ECS|GVP A500HD+|Mechware card reader + 8GB CF|Cocolino|SCSI DVD-RAM
Amiga 2000: 2MB Chip|136MB Fast|50MHz 68060|3.9|Indivision ECS + GVP Spectrum|Mechware card reader + 8GB CF|AD516|X-Surf 100|RapidRoad|Cocolino|SCSI CD-RW
 Amiga videos and other misc. stuff at https://www.youtube.com/CompTechMike/videos
 

Offline utri007

Re: NetSurf 3.6 web browser released!
« Reply #24 on: November 22, 2016, 04:51:02 PM »
Quote from: Oldsmobile_Mike;816725
I use TLSFMem on all my Amiga's.  It was created by Chris Hodges up to version 1.6 then patched to 1.9 by Cosmos, AFAIR.  It was pulled when Chris yanked all the rest of his Amiga software, for whatever (@#*$%&(#*$%& reason.  :(  It is a fantastic program for reducing memory fragmentation, I can't say how it reacts with NetSurf, specifically, but for just general day-to-day Amiga tasks - it's always the very first thing in my Startup-Sequence.  PM me your email address if you'd like me to fwd you a copy.


HAH :D Then you can say how it reacted to Netsurf. You noticed "slow down effect" youself and you were running TLSF men all the time?
ACube Sam 440ep Flex 800mhz, 1gb ram and 240gb hd and OS4.1FE
A1200 Micronic tower, OS3.9, Apollo 060 66mhz, xPert Merlin, Delfina Lite and Micronic Scandy, 500Gb hd, 66mb ram, DVD-burner and WLAN.
A1200 desktop, OS3.9, Blizzard 060 66mhz, 66mb ram, Ide Fix Express with 160Gb HD and WLAN
A500 OS2.1, GVP+HD8 with 4mb ram, 1mb chip ram and 4gb HD
Commodore CDTV KS3.1, 1mb chip, 4mb fast ram and IDE HD
 

Offline Oldsmobile_Mike

Re: NetSurf 3.6 web browser released!
« Reply #25 on: November 22, 2016, 04:53:48 PM »
Quote from: utri007;816727
HAH :D Then you can say how it reacted to Netsurf. You noticed "slow down effect" youself and you were running TLSF men all the time?

In that case, yes.  I haven't had nearly enough coffee yet, today.  What were we talking about again?  I just tried the newest version last night after being away from it for a couple months, it seemed to work well.  A big improvement.  :)
« Last Edit: November 22, 2016, 05:00:45 PM by Oldsmobile_Mike »
Amiga 500: 2MB Chip|16MB Fast|30MHz 68030+68882|3.9|Indivision ECS|GVP A500HD+|Mechware card reader + 8GB CF|Cocolino|SCSI DVD-RAM
Amiga 2000: 2MB Chip|136MB Fast|50MHz 68060|3.9|Indivision ECS + GVP Spectrum|Mechware card reader + 8GB CF|AD516|X-Surf 100|RapidRoad|Cocolino|SCSI CD-RW
 Amiga videos and other misc. stuff at https://www.youtube.com/CompTechMike/videos
 

Offline utri007

Re: NetSurf 3.6 web browser released!
« Reply #26 on: November 22, 2016, 05:06:21 PM »
Quote from: Oldsmobile_Mike;816728
In that case, yes.  I haven't had nearly enough coffee yet, today.  What were we talking about again?  I just tried the newest version last night after being away from it for a couple months, it seemed to work well.  A big improvement.  :)


Slow down effect is gone, it was actual "show stopper". :) Now browser is actually usefull. Now it loads first page longer than it used to, but lets see if it gets faster.
ACube Sam 440ep Flex 800mhz, 1gb ram and 240gb hd and OS4.1FE
A1200 Micronic tower, OS3.9, Apollo 060 66mhz, xPert Merlin, Delfina Lite and Micronic Scandy, 500Gb hd, 66mb ram, DVD-burner and WLAN.
A1200 desktop, OS3.9, Blizzard 060 66mhz, 66mb ram, Ide Fix Express with 160Gb HD and WLAN
A500 OS2.1, GVP+HD8 with 4mb ram, 1mb chip ram and 4gb HD
Commodore CDTV KS3.1, 1mb chip, 4mb fast ram and IDE HD
 

Offline olsen

Re: NetSurf 3.6 web browser released!
« Reply #27 on: November 22, 2016, 05:44:21 PM »
Quote from: utri007;816724
I don't know but it didn't help. There was tlsfmen.lha in aminet, wich is now deleted some reason. It was started from shell anytime according to the guide.

Ah, so none of the existing TLSF implementations were linked against NetSurf at any time? I'd say it would not be too difficult to adapt them to work with AmigaOS.

Patching the exec memory management API at runtime would not be quite the same as replacing the memory management for a single application. Once your exec patches have to work for all running programs, it becomes so much harder to diagnose problems and their causes. Your chances of discovery are much better if you can limit the scope.
 

Offline olsen

Re: NetSurf 3.6 web browser released!
« Reply #28 on: November 22, 2016, 05:54:45 PM »
Quote from: utri007;816729
Slow down effect is gone, it was actual "show stopper". :) Now browser is actually usefull. Now it loads first page longer than it used to, but lets see if it gets faster.
I'm working on it, or rather, working on the slab allocator in clib2.

The next set of changes is already checked in. The goal is to speed up allocation and deallocation operations so that the number of "slabs" already in use no longer affects the time spent performing these operations.

Chris sent me a log file which detailed that at times there were more than 800 "slabs" in play. I expect that this number must have had a significant negative effect on overall performance.

Let's see how today's changes fare. Unfortunately, the changes currently result in higher memory usage figures. But I think I have a solution for that problem, too.
 

Offline wawrzon

Re: NetSurf 3.6 web browser released!
« Reply #29 from previous page: November 22, 2016, 07:02:32 PM »
@olsen
i dont remember very well, as its a longer while ago now, but tlsf by chris hodges and subsequently patched by cosmos are replacements for the genuine system allocator (which may have caused problems with legacy apps) rather than statically linked against an application for internal use. thats pretty different to what you are trying to achieve, so i doubt the mentioned results are relevant, but also im not sure if the other participants understand the difference.